Method for allocating resources, electronic device, program product

By combining the resource consumption of I/O counting and I/O mode, dynamically adjusting the load of the processing node, the problem of dynamic ALUA in the prior art is solved, and more efficient load balancing and resource utilization are achieved.

CN119829263APending Publication Date: 2025-04-15DELL PROD LP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311325126.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-10-12
Publication Date
2025-04-15

AI Technical Summary

Technical Problem

In load balancing between process processing nodes, existing dynamic ALUA mainly considers I/O counting but fails to accurately consider the impact of different I/O modes on resource consumption, resulting in insufficient resource allocation.

Method used

By determining the resource consumption degree of multiple I/O modes of the processing node and calculating the load of the processing node in combination with the I/O counting, the storage object is dynamically allocated from the high-load processing node to the low-load processing node.

Benefits of technology

The load balancing accuracy of dynamic ALUA is improved, and the resource consumption of different I/O modes is taken into account, achieving more accurate resource allocation and load regulation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119829263A_ABST
    Figure CN119829263A_ABST
Patent Text Reader

Abstract

The embodiment of the invention relates to a method for allocating resources, electronic equipment and a program product. A method for allocating resources is provided. The method includes determining a plurality of resource consumption degrees for a plurality of input / output (I / O) modes of a first processing node. The method further includes determining a first load of the first processing node based on the plurality of resource consumption degrees and I / O counts for the plurality of I / O modes and allocating storage objects in the first processing node into a second processing node based on the first load. By using the method provided by the invention, the dynamic ALUA based on the I / O mode is realized, and the difference of different I / O modes in resource consumption is considered, so that the dynamic ALUA migration guidance is generated, and finally, the accuracy of dynamic ALUA balancing is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present disclosure relate to the field of computers, and more particularly, to a method, an electronic device, and a computer program product for allocating resources. Background Art

[0002] Asynchronous Logical Unit Access (ALUA) is an industry standard protocol that can be used to identify optimized paths between storage systems and hosts. ALUA allows the initiator to query the target for path attributes, such as primary path, secondary path, active optimized path, active non-optimized path, etc. It also allows the target to transmit events back to the initiator. This allows multipathing software to be developed to support any storage array. Summary of the invention

[0003] Embodiments of the present disclosure relate to methods, electronic devices, and computer program products for allocating resources.

[0004] According to a first aspect of the present disclosure, a method for allocating resources is provided. The method includes determining multiple resource consumptions of multiple input / output I / O modes of a first processing node. The method also includes determining a first load of the first processing node based on multiple resource consumptions and I / O counts for the multiple I / O modes, and allocating a storage object in the first processing node to a second processing node based on the first load, wherein the storage object is used to store data in an I / O operation.

[0005] According to a second aspect of the present disclosure, an electronic device for allocating resources is provided. The electronic device includes at least one processor, and a memory coupled to the at least one processor and having instructions stored thereon, the instructions causing the electronic device to perform actions when executed by the at least one processor, the actions including determining multiple resource consumptions of multiple input / output I / O modes of a first processing node. The actions also include determining a first load of the first processing node based on multiple resource consumptions and I / O counts for multiple I / O modes, and allocating a storage object in the first processing node to a second processing node based on the first load, wherein the storage object is used to store data in an I / O operation.

[0006] According to a third aspect of the present disclosure, there is provided a computer program product, which is tangibly stored on a non-volatile computer-readable medium and includes machine-executable instructions, which when executed cause a machine to perform the steps of the method implemented in the first aspect of the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] The above and other objects, features and advantages of the present disclosure will become more apparent through a more detailed description of exemplary embodiments of the present disclosure in conjunction with the accompanying drawings, wherein like reference numerals generally represent like elements throughout the exemplary embodiments of the present disclosure.

[0008] Figure 1 Schematic diagrams showing examples in which the devices and / or methods of embodiments of the present disclosure may be implemented;

[0009] Figure 2 A flowchart for allocating resources of a storage system according to an embodiment of the present disclosure is shown;

[0010] Figure 3 A detailed flow chart for dynamically combining the I / O resource consumption level with dynamic ALUA according to some embodiments of the present disclosure is shown;

[0011] Figure 4 The experimental result diagram of resource consumption under different I / O modes is shown;

[0012] Figure 5 A schematic block diagram of an example device that can be used to implement embodiments of the present disclosure is shown. DETAILED DESCRIPTION

[0013] Embodiments of the present disclosure will be described in more detail below with reference to the accompanying drawings. Although certain embodiments of the present disclosure are shown in the accompanying drawings, it should be understood that the present disclosure can be implemented in various forms and should not be construed as being limited to the embodiments described herein, which are instead provided for a more thorough and complete understanding of the present disclosure. It should be understood that the drawings and embodiments of the present disclosure are only for exemplary purposes and are not intended to limit the scope of protection of the present disclosure.

[0014] In the description of the embodiments of the present disclosure, the term "including" and similar terms should be understood as open inclusion, that is, "including but not limited to". The term "based on" should be understood as "based at least in part on". The term "one embodiment" or "the embodiment" should be understood as "at least one embodiment". The terms "first", "second", etc. may refer to different or the same objects. Other explicit and implicit definitions may also be included below.

[0015] Dynamic ALUA is implemented to load balance storage objects between process processing nodes in the storage system. Its value lies in solving bottlenecks and optimizing resource usage, such as computing and bandwidth resources. Currently, dynamic ALUA mainly considers input / output I / O ("input and output") counts when balancing between process processing nodes, because these I / O counts distinguish between read and write I / O. Dynamic ALUA can also balance process processing node resource utilization by balancing external host I / O. But this is not enough. For I / O access, in addition to read operations or write operations, there are also factors such as I / O mode, such as I / O size and random I / O or sequential I / O.

[0016] Dynamic ALUA is not accurate based only on the statistics of processing node I / O, and the current ALUA may also take into account some factors of read operations or write operations, such as paying attention to balancing the read and write counts in the processing nodes, but it still cannot accurately describe different I / O modes, because the I / O mode not only includes reads and writes, but also includes I / O size, and sequential or random access mode. There are usually different I / O modes for different applications or businesses. In addition, storage workloads have I / O characteristics. Therefore, in order to analyze and adjust performance, it is also necessary to understand the workload generated by the application and / or host. These I / O characteristics can include I / O size, read / write ratio, random IO / sequential IO ratio, etc.

[0017] To at least address the above and other potential problems, embodiments of the present disclosure provide a method for allocating resources. The method includes determining a plurality of resource consumptions of a plurality of input / output (I / O) modes of a first processing node. The method also includes determining a first load of the first processing node based on the plurality of resource consumptions and I / O counts for the plurality of I / O modes and allocating a storage object in the first processing node to a second processing node based on the first load, wherein the storage object is used to store data in an I / O operation.

[0018] By using the method implemented by the present disclosure, dynamic ALUA based on I / O mode is implemented, which can improve the accuracy of dynamic ALUA and take into account the differences in resource consumption of different I / O modes. The method implemented by the present disclosure can measure the resource consumption of the I / O mode, and then combine the I / O count and the resource consumption of the I / O mode to generate a dynamic ALUA relocation guide, and finally improve the accuracy of dynamic ALUA balancing.

[0019] The basic principles and several exemplary embodiments of the present disclosure will be described in detail below with reference to the accompanying drawings. Figure 1 FIG. 1 is a schematic diagram based on an embodiment of the present disclosure. It should be understood that Figure 1The number and arrangement of processing nodes, objects, components, and elements shown are only examples, and the schematic diagram may include components, elements, processing nodes, objects, and various additional elements in different numbers and arrangements. It should also be understood that although the storage system 100 used as an example in the present disclosure is a storage system based on dynamic ALUA, the method implemented based on the present disclosure can also be applied to systems based on any architecture or system.

[0020] like Figure 1 As shown, in a storage system 100 based on dynamic ALUA, one or more processing nodes 102-1 to 102-k may be included, and the processing nodes 102-1 to 102-k may be used to process all I / O requests or operations from users or clients, etc. According to an embodiment of the present disclosure, a "processing node" in a storage system may refer to a basic unit that constitutes a storage system. These processing nodes may be hardware devices, servers, storage arrays, etc., which work together to provide data storage and access services. Each processing node typically has its own processing capabilities, storage resources, and network connections. Different storage systems may have different processing node designs and functions.

[0021] In some embodiments, processing node 102-1 may be a primary processing node and is responsible for processing all I / O requests. Processing node 102-k may be a secondary processing node, which is in a standby state. When primary processing node 102-1 fails, storage system 100 may switch to processing node 102-k to take over processing I / O requests or operations from users or clients. In some embodiments, processing nodes 102-1 to 102-k may simultaneously process multiple I / O requests or operations from multiple different users or clients, and the present disclosure does not impose any limitation on this.

[0022] Each of the processing nodes 102-1 to 102-k may include one or more storage objects / logical units 104-1, 104-2, ... 104-k, etc. A storage object or logical unit may be a logical storage area in the storage system 100, which may be composed of a physical hard disk, a volume, or other file systems, etc. and store corresponding I / O data. As an example, in the context of the storage system 100 providing storage space to a client or a host, the storage space may be provided in a manner including, but not limited to, block storage and file storage.

[0023] In an embodiment using block storage as the storage mode, the storage objects 104-1, 104-2, ... 104-k can be mounted on a host or client in the form of a volume. In an embodiment using file storage as the storage mode, the storage objects 104-1, 104-2, ... 104-k can be mounted on a host or client in a shared form. Thus, the storage objects 104-1, 104-2, ... 104-k can be allocated to one or more hosts or clients, and the hosts can access data in the storage system 100 through the storage objects. The storage objects 104-1, 104-2, ... 104-k can combine the I / O mode and I / O count in the processing node.

[0024] It should also be understood that in the storage system 100, each application may have a different I / O mode. The following Table 1 summarizes the relevant data of the I / O modes of some applications:

[0025]

[0026] Table 1 I / O modes for different applications

[0027] As an example, a storage system 100 such as one based on dynamic ALUA can be installed in any computing device that has processing computing resources or storage resources. For example, a computing device can have common capabilities such as receiving and sending data requests, real-time data analysis, local data storage, and real-time network connection. Computing devices can generally include various types of devices. Examples of computing devices may include, but are not limited to: database servers, rack servers, server clusters, blade servers, enterprise-level servers, application servers, desktop computers, notebook computers, smart phones, wearable devices, security equipment, smart manufacturing equipment, smart home equipment, Internet of Things equipment, smart cars, drones, etc., and the present disclosure does not impose any restrictions on this.

[0028] Combined with the above Figure 1 A schematic diagram of the architecture of a storage system in which the method and / or process according to an embodiment of the present disclosure can be implemented is described below. Figure 1 and Figure 2 To describe a flowchart for allocating resources of a storage system according to an embodiment of the present disclosure. As described above for the storage system, the method 200 for allocating resources according to an embodiment of the present disclosure can be executed at an edge device with computing capabilities, or at a cloud server, and the present disclosure does not limit this. In order to improve the accuracy of load balancing of the storage system, a method 200 for allocating resources according to an embodiment of the present disclosure is proposed.

[0029] At block 202, multiple resource consumptions of multiple input / output I / O modes of the first processing node are determined. As an example, the storage system 100 may first determine resource consumptions of the processing node 102-1 in multiple different input / output I / O modes. Depending on the different applications that the processing node 102-1 is processing, the processing node 102-1 may be in different I / O modes. For example, in some IO modes for processing media streams, the processing node 102-1 may have an I / O size of 64KB, a read / write ratio of 98%R / 2%W, and 100% sequential writes; while in an I / O mode for processing online transaction processing (OLTP)-logs, the processing node 102-1 may have an I / O size of 512bytes to 64KB, a read / write ratio of 100%W, and 100% random writes. Therefore, when processing different tasks, the storage system resources consumed by different I / O modes may be very different.

[0030] As an example, in an embodiment of the present disclosure, the CPU usage consumed by the processing node 102-1 when performing each I / O operation in each I / O mode in multiple I / O modes can be calculated first, and the bandwidth usage consumed by performing each I / O operation in each I / O mode in the multiple I / O modes can be calculated. According to factors such as the usage and configuration of the storage system 100, different weights are assigned to the CPU usage and the bandwidth usage and the two are combined to finally obtain the resource consumption in a specific I / O mode. Additionally or alternatively, in some embodiments, the resource consumption in the I / O mode can also be determined based on the I / O size, the read-to-write ratio, and the random I / O-to-sequential I / O ratio, and the present disclosure does not impose any restrictions on this.

[0031] At block 204, a first load of the first processing node is determined based on a plurality of resource consumptions and I / O counts for a plurality of I / O patterns. As an example, the storage system 100 may determine a corresponding load of the processing node 102-1 based on different resource consumptions and corresponding I / O counts for different I / O patterns. For example, the storage system 100 may determine an average number of input / output operations per second (IOPS) of one or more storage objects 104-1, 104-2, etc. in the processing node 102-1.

[0032] The storage system 100 can then determine the I / O count of one or more storage objects 104-1, 104-2, etc. in each different IO mode of multiple I / O modes within a predetermined time period based on IOPS, and accumulate these I / O counts to obtain the total I / O count for each storage object in the multiple storage objects 104-1, 104-2, etc.

[0033] The predetermined time period may be set by the storage system 100 based on factors such as usage and configuration, or may be determined by the user, and the present disclosure does not impose any restrictions on this. The total I / O count for the storage object may be combined with the resource consumption for the I / O mode to obtain the total load for each storage object. Finally, the total loads of the storage objects 104-1, 104-2, etc. in the processing node 102-1 are accumulated to obtain the total processing node load for the processing node 102-1.

[0034] At block 206, based on the first load, storage objects in the first processing node are allocated to the second processing node, wherein the storage objects are used to store data in the I / O operation. Storage system 100 may calculate a total processing node load for each processing node in the system, and then storage system 100 may calculate an average load and a standard deviation for processing nodes 102-1 through 102-k based on the total processing node loads of these processing nodes.

[0035] Additionally or alternatively, the storage system 100 may also calculate the imbalance rate among the processing nodes 102-1 to 102-k based on the average load and the standard deviation, and compare the imbalance rate with a predetermined threshold. The predetermined threshold may be set by the storage system 100 based on factors such as usage and configuration, or may be determined by the user, and the present disclosure does not impose any restrictions on this. If the imbalance rate is lower than the predetermined threshold, it means that the processing node loads of the processing nodes 102-1 to 102-k in the current storage system 100 are balanced, so there is no need to move or allocate one or more storage objects in the processing nodes 102-1 to 102-k.

[0036] On the contrary, if the imbalance rate is higher than or equal to the predetermined threshold, it means that the processing node load of one or more processing nodes 102-1 to 102-k in the current storage system 100 is unbalanced, and therefore one or more storage objects in the processing nodes 102-1 to 102-k need to be moved or allocated to another processing node.

[0037] For example, if the current processing node 102-1 has the highest processing node load, and the second processing node or processing node 102-k has the lowest processing node load, the storage system 100 can use processing node 102-1 as the source processing node and use processing node 102-k as the destination processing node. The storage system 100 can then migrate or allocate the storage object with the highest load in the source processing node to the destination processing node as the target, and then recalculate the processing node load for the processing node. If the processing node load of the current source processing node is still higher than the processing node load of the destination processing node, the storage object with the highest load of the current source processing node can be allocated to the destination processing node. This process can be repeated until the processing node load of the source processing node is lower than or equal to the processing node load of the destination processing node, and then the reallocation or migration operation can be rolled back or revoked, so that the guidance of new allocation or migration of storage objects of the storage system can be achieved.

[0038] Figure 3 A detailed flowchart 300 of dynamically combining the I / O resource consumption level with dynamic ALUA according to some embodiments of the present disclosure is shown. It should be understood that according to the implementation method of the present disclosure, the process 300 may also include any additional steps, or lack any additional steps. Figure 3 The present disclosure does not impose any limitation on the steps shown in the figure.

[0039] At block 302, the ALUA-based storage system may begin to receive I / O operation requests from a client or a host. At block 304, the storage system may be monitored over a predetermined period of time T to obtain data associated with the storage system, such as, but not limited to, the I / O mode P. j IOPS I j , CPU usage, bandwidth usage and other data.

[0040] At box 306, the imbalance rate λ of the (multiple) processing nodes in the current storage system can be determined based on the monitored data. The calculation process of the imbalance rate λ will be described in detail below in conjunction with box 314. At box 308, it can be determined whether the current imbalance rate λ is greater than a predetermined threshold value θ for load imbalance in the processing nodes. If the imbalance rate is less than the predetermined threshold value, that is, λ<θ, it means that the current processing node load is balanced, and it can be returned to box 304 to continue monitoring the storage system status. If the imbalance rate is greater than the predetermined threshold value, that is, λ≥θ, it means that the processing node load in the storage system is unbalanced, and therefore the storage object needs to be reallocated to other processing nodes.

[0041] At block 310, the resource consumption D of the I / O pattern(s) may first be calculated. jAs an example, in the embodiments of the present disclosure, CPU usage and bandwidth resource usage can be used to measure I / O resource consumption. For example, in time period T, for I / O mode P j The average IOPS is I j , the CPU usage is CPU j , bandwidth usage / consumption is B j , then the CPU usage per I / O is The bandwidth usage per I / O is P j Represents a specific I / O mode, where 0≤j≤J, and J represents the total number of I / O modes in the storage system. j Indicates mode P j CPU resource consumption.

[0042] Since CPU and bandwidth have different units, we can first normalize the resource consumption in J modes as follows:

[0043]

[0044]

[0045] The CPU usage and bandwidth resource consumption can then be compared with the weight w C and w B Combined to calculate the resource consumption degree of (multiple) modes, in the embodiment of the present disclosure, w C +w B =1, the I / O mode P can be calculated using the following formula 1: j Resource consumption level D j_io :

[0046] D j_io =w C *NC j_io +w B *NB j_io (3)

[0047] Additionally or alternatively, in some embodiments, the resource consumption of (multiple) I / O modes may be determined based on one or more of the I / O size, the read-to-write ratio, and the random I / O-to-sequential I / O ratio, and the present disclosure does not impose any limitations on this.

[0048] At block 312, the resource consumption may be used to calculate the load of the processing node. According to an embodiment of the present disclosure, there may be K processing nodes in the storage system. For each processing node n k , in the storage system processing node n k The number of storage objects / logical storage units on thek , storage object o k_i Belong to their respective processing nodes, and k≤K, 0≤i≤N k K is the total number of processing nodes in the storage system, usually K≥2.

[0049] During the monitoring period T, the average IOPS can be I j For each storage object, there may be multiple I / O modes. According to an embodiment of the present disclosure, the I / O count under mode j may be expressed as io k_i , then mode P j Storage object O k_i The I / O count can be calculated as:

[0050] io k_i =I j *T (4)

[0051] Storage Object O k_i The total I / O count can be calculated as:

[0052] A storage object that combines resource consumption and I / O counts of the mode(s) k_i The total load can be calculated as:

[0053]

[0054] Processing Node n k Load l k Can be Among them l k It can also be expressed by the following formula:

[0055]

[0056] At block 314, the target storage object may be moved from the source processing node to the destination processing node. k , the storage system can guide dynamic ALUA to allocate storage objects. Dynamic ALUA can first measure the load of each processing node, and then dynamically allocate storage objects to the processing node. Therefore, the storage system can first measure the load imbalance. In an embodiment of the present disclosure, the average load of K processing nodes can be expressed as:

[0057]

[0058] The standard deviation of the processing node load can be expressed as:

[0059]

[0060] Then the imbalance rate λ in the processing node can be expressed as:

[0061]

[0062] According to some embodiments of the present disclosure, the load imbalance threshold in the plurality of processing nodes may be θ. The determination condition in the above block 308 may be combined to determine whether to move one or more storage objects in a processing node to another processing node.

[0063] When the imbalance rate is greater than a predetermined threshold, that is, λ≥θ, it is determined that one or more storage objects in the processing node are to be moved to the second processing node or another processing node. k_max The highest load processing node is used as the source processing node n s , and will have a minimum load l k_min The lowest load processing node is selected as the destination processing node n d .

[0064] The storage system can then select the highest load stub from the source node. s_i Object o s_i As the target, process node n from the source s Migrate / move to destination processing node n d Then recalculate the load of (multiple) processing nodes, and these steps can be repeated in an iterative loop. Until l is satisfied at block 318 s ≤l d , then roll back the last migration and stop adjusting, and finally provide ALUA dynamic storage object migration or allocation guidance. At block 320, the entire allocation process may end.

[0065] Figure 4 The experimental result graph 400 of resource consumption under different I / O modes is shown. Figure 4 As shown, the performance metrics between the I / O mode of 8K_100W_100S (8KB I / O size, 100% write and 100% sequential) and the I / O mode of 256K_100W_100S (256KB I / O size, 100% write and 100% sequential) are compared, where Figures 402 and 404 show the relevant experimental data in the 8K_100W_100S mode, and Figures 406 and 408 show the relevant experimental data in the 256K_100W_100S mode. The specific summary results are shown in Table 2 below:

[0066]

[0067] Table 2 CPU usage and bandwidth usage per I / O operation for different IO modes

[0068] Experimental results show that different I / O modes consume different resources. For example, a large I / O size will result in high bandwidth requirements for each I / O operation, while a small I / O size mode will result in high CPU usage. Since different I / O modes consume different computing resources, the dynamic ALUA algorithm needs to combine the I / O mode and I / O count to balance the storage objects between storage processing nodes.

[0069] Figure 5 A schematic block diagram of an example device 500 that may be used to implement embodiments of the present disclosure is shown. Figure 1 The computing device in the embodiment of the present invention can be implemented by using the device 500. As shown in the figure, the device 500 includes a central processing unit (CPU) 501, which can perform various appropriate actions and processes according to computer program instructions stored in a read-only memory (ROM) 502 or computer program instructions loaded from a storage unit 508 to a random access memory (RAM) 503. In the RAM 503, various programs and data required for the operation of the storage device 500 can also be included. The CPU 501, the ROM 502, and the RAM 503 are connected to each other via a bus 404. An input / output (I / O) interface 505 is also connected to the bus 504.

[0070] A number of components in the device 500 are connected to the I / O interface 505, including: an input unit 506, such as a keyboard, a mouse, etc.; an output unit 507, such as various types of displays, speakers, etc.; a storage page 508, such as a disk, an optical disk, etc.; and a communication unit 509, such as a network card, a modem, a wireless communication transceiver, etc. The communication unit 509 allows the device 500 to exchange information / data with other devices through a computer network such as the Internet and / or various telecommunication networks.

[0071] The various processes and processing described above, such as method 200, may be performed by processing unit 501. For example, in some embodiments, method 200 may be implemented as a computer software program, which is tangibly contained in a machine-readable medium, such as storage unit 508. In some embodiments, part or all of the computer program may be loaded and / or installed on device 500 via ROM 502 and / or communication unit 509. When the computer program is loaded into RAM 503 and executed by CPU 501, one or more actions of method 200 described above may be performed.

[0072] The present disclosure may be a method, an apparatus, a system and / or a computer program product. The computer program product may include a computer-readable storage medium carrying computer-readable program instructions for executing various aspects of the present disclosure.

[0073] Computer readable storage medium can be a tangible device that can hold and store instructions used by an instruction execution device. Computer readable storage medium can be, for example, but not limited to, an electrical storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the above. More specific examples (non-exhaustive list) of computer readable storage medium include: portable computer disk, hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanical encoding device, such as a punch card or a convex structure in a groove on which instructions are stored, and any suitable combination of the above. The computer readable storage medium used here is not interpreted as a transient signal itself, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagated by a waveguide or other transmission medium (e.g., a light pulse by an optical fiber cable), or an electrical signal transmitted by a wire.

[0074] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in the computer-readable storage medium in each computing / processing device.

[0075] The computer program instructions for performing the operation of the present disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages, such as Smalltalk, C++, etc., and conventional procedural programming languages, such as "C" language or similar programming languages. Computer-readable program instructions may be executed entirely on a user's computer, partially on a user's computer, as an independent software package, partially on a user's computer, partially on a remote computer, or completely on a remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., using an Internet service provider to connect via the Internet). In some embodiments, an electronic circuit, such as a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may be customized by utilizing the state information of the computer-readable program instructions, and the electronic circuit may execute the computer-readable program instructions, thereby realizing various aspects of the present disclosure.

[0076] Various aspects of the present disclosure are described herein with reference to the flowcharts and / or block diagrams of the methods, devices (systems) and computer program products according to the embodiments of the present disclosure. It should be understood that each box in the flowchart and / or block diagram and the combination of each box in the flowchart and / or block diagram can be implemented by computer-readable program instructions.

[0077] These computer-readable program instructions can be provided to a processing unit of a general-purpose computer, a special-purpose computer, or other programmable data processing device, thereby producing a machine, so that when these instructions are executed by the processing unit of the computer or other programmable data processing device, a device that implements the functions / actions specified in one or more boxes in the flowchart and / or block diagram is generated. These computer-readable program instructions can also be stored in a computer-readable storage medium, and these instructions cause the computer, programmable data processing device, and / or other equipment to work in a specific manner, so that the computer-readable medium storing the instructions includes a manufactured product, which includes instructions for implementing various aspects of the functions / actions specified in one or more boxes in the flowchart and / or block diagram.

[0078] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device so that a series of operating steps are performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions executed on the computer, other programmable data processing apparatus, or other device to implement the functions / actions specified in one or more boxes in the flowchart and / or block diagram.

[0079] The flow chart and block diagram in the accompanying drawings show the possible architecture, function and operation of the system, method and computer program product according to multiple embodiments of the present disclosure. In this regard, each square box in the flow chart or block diagram can represent a part of a module, program segment or instruction, and a part of a module, program segment or instruction includes one or more executable instructions for realizing the specified logical function. In some alternative implementations, the function marked in the square box can also occur in a sequence different from that marked in the accompanying drawings. For example, two continuous square boxes can actually be executed substantially in parallel, and they can sometimes be executed in the opposite order, depending on the functions involved. It should also be noted that each square box in the block diagram and / or flow chart, and the combination of the square boxes in the block diagram and / or flow chart can be implemented with a dedicated hardware-based system that performs the specified function or action, or can be implemented with a combination of special hardware and computer instructions.

[0080] The embodiments of the present disclosure have been described above, and the above description is exemplary, not exhaustive, and is not limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The choice of terms used herein is intended to best explain the principles of the embodiments, practical applications, or technical improvements to the technology in the market, or to enable other persons of ordinary skill in the art to understand the embodiments disclosed herein.

Claims

1. A method for allocating resources, the method comprising: determining a plurality of resource consumption levels of a plurality of input / output (I / O) modes of the first processing node; determining a first load of the first processing node based on the plurality of resource consumption levels and I / O counts for the plurality of I / O patterns; as well as Based on the first load, a storage object in the first processing node is allocated to a second processing node, wherein the storage object is used to store data in an I / O operation.

2. The method of claim 1 , wherein determining the plurality of resource consumption levels of the plurality of I / O modes of the first processing node comprises: Determine the CPU usage consumed when performing each I / O operation in each I / O mode of the plurality of I / O modes; Determining bandwidth usage consumed by performing each I / O operation in each of the plurality of I / O modes; as well as The CPU usage and the bandwidth usage are combined to determine the resource consumption levels of the I / O modes.

3. The method of claim 1 , wherein determining the first load of the first processing node based on the plurality of resource consumption levels and the I / O count for the plurality of I / O patterns comprises: Determine an average number of input / output times per second (IOPS) of the storage object in the first processing node; determining the I / O count of the storage object in each of the plurality of I / O modes within a predetermined time period based on the IOPS; as well as A total I / O count for the storage object is determined based on the I / O count in each of the plurality of I / O patterns.

4. The method of claim 3, wherein determining the first load of the first processing node based on the plurality of resource consumption levels and the I / O count for the plurality of I / O patterns further comprises: combining the total I / O count for the storage object with the plurality of resource consumptions for the plurality of I / O patterns to determine a total load for the storage object; as well as The first load of the first processing node is determined based on the total load for the storage object.

5. The method of claim 1 , wherein allocating storage objects in the first processing node to the second processing node based on the first load comprises: determining an imbalance rate based on an average load and a standard deviation between the first load and a second load of the second processing node; as well as The imbalance ratio is compared with a predetermined threshold.

6. The method according to claim 5, wherein comparing the imbalance rate with the predetermined threshold comprises: In response to the imbalance rate being lower than the predetermined threshold, monitoring the first load of the first processing node and the second load of the second processing node; as well as In response to the imbalance rate being higher than or equal to the predetermined threshold, the storage object of the first processing node is allocated to the second processing node.

7. The method of claim 5, wherein allocating the storage object in the first processing node to the second processing node further comprises: allocating a first storage object having the highest load in the first processing node to the second processing node; as well as In response to the first load of the first processing node still being higher than the second load of the second processing node, a second storage object having a second load lower than a highest load in the first processing node is allocated to the second processing node.

8. The method of claim 5, wherein allocating the storage object in the first processing node to the second processing node further comprises: In response to the first load of the first processing node being lower than or equal to the second load of the second processing node, undoing the operation of allocating the storage object in the first processing node to the second processing node. 9 . The method of claim 1 , wherein the plurality of resource consumption levels of the plurality of I / O patterns are determined based on I / O size, a read-to-write ratio, and a random I / O-to-sequential I / O ratio.

10. An electronic device comprising: processor; as well as A memory is coupled to the processor and stores instructions that, when executed by the processor, cause the device to perform the following actions: determining a plurality of resource consumption levels of a plurality of input / output (I / O) modes of the first processing node; determining a first load of the first processing node based on the plurality of resource consumption levels and I / O counts for the plurality of I / O patterns; as well as Based on the first load, a storage object in the first processing node is allocated to a second processing node, wherein the storage object is used to store data in an I / O operation.

11. The electronic device of claim 10, wherein determining the plurality of resource consumption levels of the plurality of I / O modes of the first processing node comprises: Determine the CPU usage consumed when performing each I / O operation in each I / O mode of the plurality of I / O modes; Determining bandwidth usage consumed by performing each I / O operation in each of the plurality of I / O modes; as well as The CPU usage and the bandwidth usage are combined to determine the resource consumption levels of the I / O modes.

12. The electronic device of claim 10, wherein determining the first load of the first processing node based on the plurality of resource consumption levels and the I / O count for the plurality of I / O modes comprises: Determine an average number of input / output times per second (IOPS) of the storage object in the first processing node; determining the I / O count of the storage object in each of the plurality of I / O modes within a predetermined time period based on the IOPS; as well as A total I / O count for the storage object is determined based on the I / O count in each of the plurality of I / O patterns.

13. The electronic device of claim 12, wherein determining the first load of the first processing node based on the plurality of resource consumption levels and the I / O count for the plurality of I / O modes further comprises: combining the total I / O count for the storage object with the plurality of resource consumptions for the plurality of I / O patterns to determine a total load for the storage object; as well as The first load of the first processing node is determined based on the total load for the storage object.

14. The electronic device of claim 10, wherein allocating the storage object in the first processing node to the second processing node based on the first load comprises: determining an imbalance rate based on an average load and a standard deviation between the first load and a second load of the second processing node; as well as The imbalance ratio is compared with a predetermined threshold.

15. The electronic device according to claim 14, wherein comparing the imbalance rate with the predetermined threshold comprises: In response to the imbalance rate being lower than the predetermined threshold, monitoring the first load of the first processing node and the second load of the second processing node; as well as In response to the imbalance rate being higher than or equal to the predetermined threshold, the storage object of the first processing node is allocated to the second processing node.

16. The electronic device of claim 14, wherein allocating the storage object in the first processing node to the second processing node further comprises: allocating a first storage object having the highest load in the first processing node to the second processing node; as well as In response to the first load of the first processing node still being higher than the second load of the second processing node, a second storage object having a second load lower than a highest load in the first processing node is allocated to the second processing node.

17. The electronic device of claim 14, wherein allocating the storage object in the first processing node to the second processing node further comprises: In response to the first load of the first processing node being lower than or equal to the second load of the second processing node, undoing the operation of allocating the storage object in the first processing node to the second processing node.

18. The electronic device of claim 10, wherein the plurality of resource consumption levels of the plurality of I / O modes are determined based on an I / O size, a read-to-write ratio, and a random I / O-to-sequential I / O ratio.

19. A computer program product tangibly stored on a non-transitory computer readable storage medium and comprising computer executable instructions that, when executed, cause a computer to: determining a plurality of resource consumption levels of a plurality of input / output (I / O) modes of the first processing node; determining a first load of the first processing node based on the plurality of resource consumption levels and I / O counts for the plurality of I / O patterns; as well as Based on the first load, a storage object in the first processing node is allocated to a second processing node, wherein the storage object is used to store data in an I / O operation.

20. The computer program product of claim 19, wherein determining the plurality of resource consumption levels of the plurality of I / O modes of the first processing node comprises: Determine the CPU usage consumed when performing each I / O operation in each I / O mode of the plurality of I / O modes; Determining bandwidth usage consumed by performing each I / O operation in each of the plurality of I / O modes; as well as The CPU usage and the bandwidth usage are combined to determine the resource consumption levels of the I / O modes.