Overload control method of storage system and related device
By monitoring the I/O request queue queue queuing information of the storage system in real time and adjusting the request amount dynamically, the problem of difficult time controlling the storage system when load is overloaded in the prior art is solved, and efficient overload management and performance guarantee is achieved.
Patent Information
- Application Number
- CN202311267876.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2023-09-27
- Publication Date
- 2025-03-28
AI Technical Summary
When the load pressure of existing storage systems is greater than the maximum processing capacity, it is difficult to achieve timely and precise overload control, resulting in a sharp increase in I/O request processing delay, bandwidth deterioration, and storage system crashes.
By obtaining the I/O request queue queue information in the storage system, the computing node can monitor the load status of the storage system in real time and dynamically adjust the amount of I/O requests entering the system according to the load level to avoid overload and crashes.
Accurate overload control of the storage system is realized, ensuring that the system can still provide large bandwidth and low latency after overload, avoiding the crash and performance losses of the storage system.
Smart Images

Figure CN119718608A_ABST
Abstract
Description
Technical Field
[0001] The present application relates to the field of storage technology, and in particular to an overload control method and related device for a storage system. Background Art
[0002] When the load pressure of the storage system is greater than the maximum processing capacity of the storage system, excessive input / output (I / O) requests will wait in the queue of the storage system, and a large amount of resource competition and request retries will occur inside the storage system, causing a sharp increase in the processing delay of I / O requests and degradation of effective bandwidth. When the load pressure far exceeds the upper limit of the processing capacity, the storage system may crash, the effective bandwidth may drop sharply, and the latency may soar. In order to avoid the above situation, it is very important to limit the number of I / O requests entering the system and ensure that the number of I / O requests entering the system can match the actual maximum processing capacity of the system in real time.
[0003] However, there are many factors that affect the maximum processing capacity of the storage system. Faced with different hardware combinations and complex and changing services on the business side, it is very challenging to accurately and in real time control the amount of I / O requests entering the storage system. Currently, the amount of requests entering the storage system is generally controlled based on the BUSY signal returned from the storage system to achieve overload control. Although this solution can alleviate the problem of storage system overload and collapse, it is difficult to achieve timely overload control because the storage system is already in a relatively serious overload when the BUSY signal is returned (at this time, the bandwidth has been lost to a certain extent, and the latency has increased significantly compared to light load). Summary of the invention
[0004] The present application provides a storage system overload control method and related devices, which can accurately control the amount of I / O requests entering the storage system, ensure that the storage system can still provide a large bandwidth and low latency to the outside after overload, and timely control the overload of the storage system.
[0005] In a first aspect, the present application provides an overload control method for a storage system, which can be applied to a computing node of the storage system, including:
[0006] First, first queuing information of input / output I / O requests in the storage system is obtained, wherein the first queuing information indicates a queuing status of the I / O requests in a queue in the storage system; when it is determined according to the first queuing information that the load of the storage system is high, the amount of I / O requests entering the storage system is reduced; when it is determined according to the first queuing information that the load of the storage system is low, the amount of I / O requests entering the storage system is increased.
[0007] On the one hand, by obtaining the first queuing information of I / O requests in the storage system, the computing node can measure the queuing status of I / O requests in the storage system and provide accurate data for overload control of the storage system. On the other hand, the computing node can control the amount of I / O requests entering the storage system according to the load of the storage system, so as to achieve accurate control of the overload status of the storage system before the storage system is seriously overloaded, prevent too many I / O requests from entering the storage system queue, avoid overload and collapse of the storage system after overload, ensure that the storage system can still provide a large bandwidth and low latency to the outside world after overload, and control the overload of the storage system in time.
[0008] In a possible implementation, obtaining first queue information of an input / output I / O request in a storage system includes:
[0009] Using the detection message to obtain the second queue information of the I / O request in the queue in the storage system;
[0010] The first queuing information is obtained according to the second queuing information of the I / O request in the queue within the storage system.
[0011] In this implementation, due to the cross-hardware and network problems, the computing node cannot directly obtain the second queue information in the queue in the storage system. The computing node detects the second queue information in the queue by actively sending a detection message.
[0012] In a possible implementation, using a detection message to obtain second queuing information of an I / O request in a queue in a storage system includes:
[0013] The detection message is used to collect the second queue information corresponding to each of the first n layers of queues in the storage system of the I / O request, where n is a positive integer and the initial value of n is 2;
[0014] When the first condition is met, the corresponding second queue information of each of the first n layers of queues is obtained;
[0015] When the first condition is not met, n is incremented by 1, and the process returns to the step of using detection messages to collect second queuing information corresponding to each of the I / O requests in the first n layers of queues, where n is a positive integer.
[0016] In a possible implementation, the first condition includes at least one of the following:
[0017] The sum of the second queue information corresponding to the first n layers of queues is greater than the target delay; or,
[0018] The nth layer is the last layer in the entire I / O request path.
[0019] In a possible implementation, obtaining first queuing information according to second queuing information of an I / O request in a queue in a storage system includes:
[0020] Adding the second queue information of the I / O request in the queue in the storage system to obtain the third queue information;
[0021] Get the total number of types corresponding to I / O requests;
[0022] The first queuing information is calculated based on the third queuing information and the total number.
[0023] In this implementation, the computing node calculates the first queuing information according to the sum of the second queuing information and the total quantity, and controls the amount of I / O requests entering the storage system according to the first queuing information, thereby achieving overload control of the storage system.
[0024] In a possible implementation manner, the method further includes:
[0025] When the first queuing information is less than the target value of the first queuing information, determining that the load of the storage system is low;
[0026] When the first queuing information is greater than the target value of the first queuing information, it is determined that the load of the storage system is high.
[0027] In this implementation, the computing node performs overload control by comparing the first queuing information with the target value of the first queuing information, so that the overload can be timely and accurately controlled according to the actual pressure of the storage system, and too many requests can be prevented from entering the system for queuing, thereby ensuring that the storage system can still provide the maximum bandwidth and low latency to the outside world after overload.
[0028] In a possible implementation, the first queuing information includes an average queuing delay of the I / O request.
[0029] In this implementation, the computing node evaluates the queuing status of I / O requests on the entire I / O request path of the storage system based on the average queuing delay of the I / O requests, avoiding the problem of inaccurate queuing status detection due to large differences in delays between different types of IO requests.
[0030] In a possible implementation, the first queuing information includes an average queuing length of the I / O requests.
[0031] In this implementation, the computing node evaluates the queuing status of I / O requests on the entire I / O request path of the storage system based on the average queuing length of the I / O requests, avoiding the problem of inaccurate queuing status detection due to large differences in latency between different types of IO requests.
[0032] In a possible implementation, the first queuing information includes queuing information of the I / O request in a queue from a controller to a memory in the storage system.
[0033] In a second aspect, the present application provides an overload control device for a storage system, comprising:
[0034] A processing module, used to obtain first queuing information of an input / output I / O request in a storage system, where the first queuing information indicates a queuing status of the I / O request in a queue in the storage system;
[0035] A control module, configured to reduce the amount of I / O requests entering the storage system when it is determined according to the first queuing information that the load of the storage system is high;
[0036] The control module is further configured to increase the amount of I / O requests entering the storage system when it is determined according to the first queuing information that the load of the storage system is low.
[0037] In a possible implementation, the processing module is further configured to:
[0038] Using the detection message to obtain the second queue information of the I / O request in the queue in the storage system;
[0039] The first queuing information is obtained according to the second queuing information of the I / O request in the queue within the storage system.
[0040] In a possible implementation, the processing module is further configured to:
[0041] The detection message is used to collect the second queue information corresponding to each of the first n layers of queues in the storage system of the I / O request, where n is a positive integer and the initial value of n is 2;
[0042] When the first condition is met, the corresponding second queue information of each of the first n layers of queues is obtained;
[0043] When the first condition is not met, n is incremented by 1, and the process returns to the step of using detection messages to collect second queuing information corresponding to each of the I / O requests in the first n layers of queues, where n is a positive integer.
[0044] In a possible implementation, the first condition includes at least one of the following:
[0045] The sum of the second queue information corresponding to the first n layers of queues is greater than the target delay; or,
[0046] The nth layer is the last layer in the entire I / O request path.
[0047] In a possible implementation, the processing module is further configured to:
[0048] Adding the second queue information of the I / O request in the queue in the storage system to obtain third queue information;
[0049] Get the total number of types corresponding to I / O requests;
[0050] The first queuing information is calculated based on the third queuing information and the total number.
[0051] In a possible implementation, the control module is further configured to:
[0052] When the first queuing information is less than the target value of the first queuing information, determining that the load of the storage system is low;
[0053] When the first queuing information is greater than the target value of the first queuing information, it is determined that the load of the storage system is high.
[0054] In a possible implementation, the first queuing information includes an average queuing delay of the I / O request.
[0055] In a possible implementation, the first queuing information includes an average queuing length of the I / O requests.
[0056] In a possible implementation, the first queuing information includes queuing information of the I / O request in a queue from a controller to a memory in the storage system.
[0057] In a third aspect, the present application provides a computing node, the computing node comprising a processor, the processor running program instructions in a memory to execute the method in the above-mentioned first aspect or any possible implementation manner of the first aspect.
[0058] In a fourth aspect, the present application provides a storage system. In a seventh aspect, the present application provides a storage system including a computing node and a storage node.
[0059] The computing node is used to execute the method in the above-mentioned first aspect or any possible implementation manner of the first aspect.
[0060] In a fifth aspect, the present application provides a computer program product, which, when executed on a computer, enables the computer to execute a method in any possible implementation of the first aspect.
[0061] In a sixth aspect, the present application provides a chip system, which includes a processor for implementing the method in any possible implementation of the first aspect. In one possible design, the chip system also includes a memory for storing program instructions and / or data. The chip system can be composed of a chip, or can include a chip and other discrete devices.
[0062] The solutions of the second to sixth aspects mentioned above are used to implement or cooperate with the method in the first aspect or any possible implementation method thereof, and therefore can achieve the same or corresponding beneficial effects as the first aspect, and will not be repeated here. BRIEF DESCRIPTION OF THE DRAWINGS
[0063] Figure 1a A schematic diagram of a storage system provided in an embodiment of the present application;
[0064] Figure 1b A schematic diagram of a structure of a computing node provided in an embodiment of the present application;
[0065] Figure 2a A schematic diagram of overload pressure and delay of a storage system;
[0066] Figure 2b A schematic diagram of the overload pressure and bandwidth of the storage system;
[0067] Figure 3 A schematic diagram of a flow chart of an overload control method for a storage system provided in an embodiment of the present application;
[0068] Figure 4 A detection schematic diagram of an overload control method for a storage system provided in an embodiment of the present application;
[0069] Figure 5 A schematic diagram of a detection message provided in an embodiment of the present application;
[0070] Figure 6 A schematic diagram of the structure of an overload control device for a storage system provided in an embodiment of the present application. DETAILED DESCRIPTION
[0071] The following will be combined with the drawings in the embodiments of the present application to clearly and completely describe the technical solutions in the embodiments of the present application. Obviously, the described embodiments are only some embodiments of the present application, not all embodiments. Based on the embodiments in the present application, all other embodiments obtained by those skilled in the art without making creative work are within the scope of protection of this application. It is known to those skilled in the art that with the development of technology and the emergence of new scenarios, the technical solutions provided in the embodiments of the present application are also applicable to similar technical problems.
[0072] The terms "first", "second", etc. in the specification and claims of the present application and the above-mentioned drawings are used to distinguish similar objects, and are not necessarily used to describe a specific order or sequence. It should be understood that the data used in this way can be interchangeable where appropriate, so that the embodiments described herein can be implemented in an order other than that illustrated or described herein. In addition, the terms "including" and "having" and any of their variations are intended to cover non-exclusive inclusions, for example, a process, method, system, product or device that includes a series of steps or modules is not necessarily limited to those steps or modules that are clearly listed, but may include other steps or modules that are not clearly listed or inherent to these processes, methods, products or devices.
[0073] The term "and / or" in this application can be a description of the association relationship of associated objects, indicating that there can be three relationships. For example, A and / or B can represent: A exists alone, A and B exist at the same time, and B exists alone. In addition, the character " / " in this application generally indicates that the associated objects before and after are in an "or" relationship.
[0074] It should also be noted that, in some alternative implementations, the functions / acts noted may occur out of the order of the drawings. For example, two figures shown in succession may in fact occur substantially simultaneously or may sometimes be performed in the reverse order, depending on the functions / acts involved.
[0075] In the embodiments of the present application, unless otherwise specified, the meaning of "at least one" refers to one or more, and the meaning of "plurality" refers to two or more. It is understood that in the present application, "when", "if" and "if" all refer to the device making corresponding processing under certain objective circumstances, and do not limit the time, nor do they require that there must be a judgment action when the device is implemented, nor do they mean that there are other limitations. In addition, the special word "exemplary" means "used as an example, embodiment or illustrative". Any embodiment described as "exemplary" is not necessarily interpreted as being superior or better than other embodiments.
[0076] The present application can be applied to the application scenarios of a centralized storage system or a distributed storage system. A centralized storage system refers to a system that stores data on one storage node, and a distributed storage system refers to a system that stores data on multiple independent storage nodes.
[0077] The present application embodiment takes the storage system as a distributed storage system as an example for description. Figure 1a , Figure 1a A schematic diagram of a storage system provided in an embodiment of the present application. Figure 1a As shown, the storage system 100 includes a computing node cluster and a storage node cluster.
[0078] The computing node cluster includes one or more computing nodes 11 ( Figure 1a Two computing nodes 11 are shown in the figure, but the present invention is not limited to two computing nodes 11). The computing nodes 11 can communicate with each other through a network. The computing nodes 11 can be servers, desktop computers, storage array controllers, etc.
[0079] The storage node cluster may include multiple storage nodes 12 ( Figure 1a Three storage nodes 12 are shown in the figure, but are not limited to three storage nodes 12), and the storage nodes 12 are used to persistently store the data transmitted by the computing nodes.
[0080] The computing node 11 and the storage node 12 may be connected locally or remotely, including wired connection and wireless connection, etc. The storage node 12 and the computing node 11 may also be integrated into the same physical device.
[0081] See also Figure 1b , Figure 1b A schematic diagram of a computing node provided in an embodiment of the present application. Figure 1b As shown, the computing node 11 includes at least one processor 111 , a communication bus 112 , a memory 113 , and at least one communication interface 114 .
[0082] The processor 111, the memory 113, and the communication interface 114 communicate via the communication bus 112, and may also communicate via other means such as wireless transmission. The memory 113 is used to store instructions, and the processor 111 is used to execute the instructions stored in the memory 113. The memory 113 stores program codes, and the processor 111 can call the program codes stored in the memory 113 to execute. Figure 3 For specific implementation of steps 302 to 306 in the embodiment shown, please refer to Figure 3 The detailed description of steps 302 to 306 in the illustrated embodiment is not repeated here.
[0083] Optionally, the processor 111 is a general-purpose central processing unit (CPU), and may also be other general-purpose processors, digital signal processors (DSP), application-specific integrated circuits (ASIC), field programmable gate arrays (FPGA) or other programmable logic devices (PLD), transistor logic devices, hardware components or any combination thereof. The above-mentioned PLD is a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL) or any combination thereof.
[0084] The communication bus 112 is used to transmit information between the processor 111, the memory 113 and the communication interface 114. The communication bus 112 is divided into an address bus, a data bus, a control bus, etc. For ease of representation, only one thick line is used in the figure, but it does not mean that there is only one bus or one type of bus.
[0085] The memory 113 may be a random access memory (RAM), a dynamic random access memory (DRAM), a storage class memory (SCM), a static random access memory (SRAM), etc. It may also be a read only memory (ROM), a programmable read only memory (PROM), an erasable programmable read only memory (EPROM), etc.
[0086] In addition, the memory 113 may also be a dual inline memory module or a dual inline memory module (DIMM), that is, a module composed of DRAM, or a solid state disk (SSD).
[0087] In actual applications, multiple memories 113 and memories 113 of different types may be configured in the computing node 11. This embodiment does not limit the number and type of the memories 113. In addition, the memory 113 may be configured to have a power-saving function. The power-saving function means that when the system loses power and then powers on again, the data stored in the memory 113 will not be lost. A memory with a power-saving function is called a non-volatile memory. In some embodiments, the memory 113 is used to store program codes for executing the solution of the present application, and the processor 111 executes the program codes stored in the memory 113.
[0088] Optionally, the memory 113 exists independently and is connected to the processor 111 via the communication bus 112 .
[0089] Optionally, the memory 113 and the processor 111 are integrated together.
[0090] The communication interface 114 uses any transceiver-like device to communicate with the storage node 12. For example, when the total amount of data in the memory 113 reaches a certain threshold, the computing node 11 sends a request to the storage node 12 through the communication interface 114 to store the data persistently. The communication interface 114 includes a wired communication interface. Optionally, the communication interface 114 also includes a wireless communication interface. Among them, the wired communication interface is, for example, an Ethernet interface. The Ethernet interface is an optical interface, an electrical interface or a combination thereof. The wireless communication interface is a wireless local area network (WLAN) interface, a cellular network communication interface or a combination thereof, etc. In a specific implementation, as an embodiment, the processor 111 includes one or more CPUs, such as Figure 1b CPU0 and CPU1 are shown in the figure.
[0091] In a specific implementation, as an embodiment, the control device 11 includes multiple processors, such as Figure 1b 1 and 115. Each of these processors is a single-CPU or a multi-CPU. A processor here refers to one or more devices, circuits, and / or processing cores for processing data (such as computer program instructions).
[0092] Users access data through applications. Computers running these applications can be called "clients". Clients can be physical machines or virtual machines. Physical clients include but are not limited to desktop computers, servers, laptops, and mobile devices. Users can initiate data access requests, such as data write requests or data read requests, to the computing nodes 11 in the storage system 100 through the client. The client's functions can also be integrated into the computing nodes, and the computing nodes 11 directly initiate data access requests to the storage nodes 12.
[0093] It is to be understood that the method steps in the embodiments of the present application may be implemented in hardware or in software instructions executable by the processor 111. The software instructions may be composed of corresponding software modules, and the software modules may be stored in random access memory, flash memory, read-only memory, programmable read-only memory, erasable programmable read-only memory, electrically erasable programmable read-only memory, registers, hard disks, mobile hard disks, compact disc read-only memory (CD-ROM) or any other form of storage medium known in the art. In addition, the scope of the device described in the present application is not limited thereto, and the structure of the device may not be affected by the following. Figure 6 A device may be a stand-alone device or may be part of a larger device. For example, a device may be:
[0094] (1) An independent integrated circuit (IC), or chip, or chip system or subsystem;
[0095] (2) having a set of one or more ICs, and optionally, the IC set may also include a storage component for storing data and / or instructions;
[0096] (3) Modules that can be embedded in other devices;
[0097] (4) Receivers, terminals, intelligent terminals, wireless devices, handheld devices, mobile units, vehicle-mounted devices, artificial intelligence devices, machine equipment, household equipment, medical equipment, industrial equipment, etc.;
[0098] (5)Others
[0099] Those skilled in the art can clearly understand that, for the convenience and brevity of description, the specific working process of the device described above can refer to the corresponding process in the aforementioned method embodiment, and will not be repeated here.
[0100] Understandably, Figure 1a and Figure 1bThe structure of the storage system shown is only an example. The overload control method of the storage system provided in the embodiment of the present application can be applied to the structure described above but is not limited to it, and is not limited here.
[0101] In the application scenarios described above, when the load pressure of the storage system exceeds the maximum processing capacity of the storage system, excessive requests will be queued in the storage system queue, and a large number of resource competition and request retries will occur inside the storage system, resulting in a sharp increase in request processing latency and degradation of effective bandwidth. Figure 2a and Figure 2b , Figure 2a and Figure 2b The following are a schematic diagram of the overload pressure and latency of the storage system and a schematic diagram of the overload pressure and bandwidth of the storage system. When the storage load pressure far exceeds the upper limit of the processing capacity, the storage system may crash, the effective bandwidth may drop sharply, and the latency may soar.
[0102] In order to avoid the above situation, a suitable overload control algorithm is needed to limit the number of requests entering the storage system to ensure that the number of requests entering the storage system can match the actual maximum processing capacity of the storage system in real time.
[0103] However, there are many factors that affect the maximum processing capacity of the storage system: from the hardware perspective, there are CPU, number of disks, disk media type, etc.; from the software perspective, there are software architecture, load IO size, load read-write ratio, load access mode, etc. Faced with different hardware combinations and complex and changing services on the business side, it is very challenging to accurately and real-time control the number of requests entering the storage system.
[0104] At present, the amount of requests entering the storage system is generally controlled based on the BUSY signal returned from the storage system to achieve overload control (OLC). This solution mainly relies on the BUSY signal returned from the storage system. After the number of BUSY signals exceeds a certain threshold, the service requests are overloaded and the flow entering the storage system is limited. Among them, overload control refers to the system load pressure exceeding the maximum processing capacity of the system. Although this solution can alleviate the problem of storage system overload collapse, since the storage system is already in a relatively serious overload when the BUSY signal is returned, when the load pressure of the storage system transitions from overload to collapse, the bandwidth has been lost to a certain extent, and the delay increases significantly relative to light load. It is difficult to accurately perceive the I / O queuing situation in the storage system and timely control the overload of the storage system, resulting in the maximum delay of the storage system after overload cannot be effectively guaranteed.
[0105] In view of this, an embodiment of the present application provides an overload control method for a storage system, which can be performed by a computing node (for example, Figure 1a or Figure 1b Specifically, the computing node obtains first queuing information of input / output (I / O) requests in the storage system, wherein the first queuing information indicates the queuing status of the I / O requests in the queue in the storage system, and then reduces the amount of I / O requests entering the storage system when it is determined according to the first queuing information that the load of the storage system is high; and increases the amount of I / O requests entering the storage system when it is determined according to the first queuing information that the load of the storage system is low.
[0106] On the one hand, the computing node obtains the first queue information of I / O requests in the storage system to provide accurate data information for the overload control of the storage system and implement the monitoring of the overloaded system. On the other hand, the computing node can control the amount of I / O requests entering the storage system according to the load of the storage system, so as to achieve accurate control of the overload state of the storage system before the storage system is seriously overloaded, prevent too many I / O requests from entering the storage system queue, avoid the problem of overload collapse of the storage system after overload, ensure that the storage system can still provide a large bandwidth and low latency to the outside world after overload, and control the overload of the storage system in time.
[0107] Next, the overload control method of the storage system in the embodiment of the present application is described in detail from the perspective of the computing node 11.
[0108] See also Figure 3 , Figure 3 A flow chart of an overload control method for a storage system provided in an embodiment of the present application is shown in FIG. Figure 1a and Figure 1b The computing node shown is executed. The method includes:
[0109] S302: The computing node obtains first queue information of the I / O request in the storage system.
[0110] In this embodiment, the calculation result is obtained by acquiring the first queuing information of the I / O request in each cache queue of the storage system to detect the queuing status of the I / O request in the queue.
[0111] The first queuing information is used to indicate the queuing status of the I / O request in the request cache queue. Optionally, the first queuing information may be the average queuing delay of the I / O request. Correspondingly, the second queuing information is the queuing delay of the I / O request in any queue. Optionally, the first queuing information includes the average queuing length of the I / O request. Correspondingly, the second queuing information is the queuing length of the I / O request in any queue. The computing node evaluates the queuing status of the I / O request on the entire I / O request path of the storage system according to the average queuing delay or average queuing length of the I / O request, thereby avoiding the problem of inaccurate queuing status detection due to the large difference in latency between different types of IO requests. The storage system is composed of multiple different business modules, and each module has a corresponding request cache queue. The computing node collects performance data of the cache queue of each module to detect the queuing status of the I / O request in the queue. Specifically, in an optional implementation, the computing node can detect the queuing status of the I / O request by the message, the computing node obtains the second queuing information of the I / O request in the queue of the entire I / O request path, and then obtains the first queuing information based on the second queuing information of the I / O request in the queue of the entire I / O request path.
[0112] In this implementation, the computing node can use detection messages to collect performance data for the queues of each module of the storage system. Specifically, the computing node periodically sends detection messages from the source end of the storage system, measures the system bandwidth and queue queuing status on the entire I / O request path from the source end to the storage node's memory, and obtains the first queuing information. Among them, the source end of the storage system is the client, and the client can be deployed inside or outside the computing node of the storage system. The user can initiate a data access request to the computing node in the storage system or directly initiate a data access request to other modules of the computing node internally.
[0113] For example, please refer to Figure 4 , Figure 4A detection schematic diagram of the overload control method of the storage system provided by the embodiment of the present application. Assume that the client is integrated into the computing node, the storage system includes modules A, B and a disk, modules A and B are integrated into the computing node, and the disk is integrated into the storage node. The first queuing information is the average queuing delay of the I / O request, and the second queuing information is the queuing delay of the I / O request in any queue. The client periodically sends a detection message to module A to collect the queuing delay of the I / O request in the queue of module A, and then module A sends a detection message to module B to collect the queuing delay of the I / O request in the queue of module B. Finally, module B sends a detection message to the disk. After receiving the detection message, the disk returns the statistical information to the client, and the client obtains the queuing delay of the I / O request in the queue of the entire I / O request path, and then accumulates the queuing delay to obtain the total queuing delay and average queuing delay of the I / O request in the entire I / O request path of the storage system. Optionally, when the computing node uses the detection message to obtain the second queuing information of the I / O request in the queue of the entire I / O request path, the second queuing information may be obtained by the following method:
[0114] The computing node uses detection messages to collect the second queue information corresponding to each of the I / O requests in the first n layers of queues, where n is a positive integer and the initial value of n is 2;
[0115] When the first condition is met, the computing node obtains the second queue information corresponding to each of the first n layers of queues;
[0116] When the first condition is not met, the computing node adds 1 to n and returns to the step of using detection messages to collect second queuing information corresponding to each of the I / O requests in the first n layers of queues, where n is a positive integer.
[0117] In this method, after the source end of the computing node sends a detection message, when the detection message reaches the nth layer, it will determine whether the sum of the second queuing information of each layer currently obtained from the source end to the nth layer has met the first condition. If the first condition is met, the computing node only obtains the second queuing information corresponding to each of the first n layers of queues. If the first condition is not met, the computing node continues to send detection messages from the nth layer to the n+1th layer to obtain the second queuing information of the n+1th layer. In an optional implementation, the first condition includes at least one of the following: the sum of the second queuing information corresponding to each of the first n layers of queues is greater than the target delay; or, the nth layer is the last layer on the entire I / O request path.
[0118] It is understandable that, due to the existence of cross-hardware and cross-network problems, the computing node can use detection messages to check the queuing status of the request cache queues of each module or layer. In practical applications, the computing node can also use other methods to detect the queuing status in the queues of each layer. The specific protocol used by the detection message can be set according to actual needs, such as Transmission Control Protocol / Internet Protocol (TCP / IP), User Datagram Protocol (UDP), etc., which is not limited in this application.
[0119] It can be understood that when the sum of the second queue information is greater than the target delay, it indicates that the storage system is currently overloaded. The computing node controls the amount of I / O requests entering the storage system based on the sum of the delays closest to the target to prevent too many I / O requests from entering the storage system queue, ensuring that the storage system can still provide maximum bandwidth and lower latency to the outside world after overload.
[0120] After the computing node obtains the second queuing information in the first n layers of queues using the detection message, in an optional implementation method, the computing node can add the second queuing information of the I / O requests in the first n layers of queues to obtain the third queuing information, and calculate the first queuing information based on the third queuing information and the total number of types corresponding to the obtained I / O requests.
[0121] In this implementation, taking the second queuing information as the queuing delay as an example, after obtaining the queuing delays in the first n layers of queues, the computing node accumulates the queuing delays to obtain the third queuing information, i.e., the total queuing delay. Then, based on the total number of types corresponding to the I / O requests and the third queue pair information, the computing node can obtain the first queuing information, i.e., the average queuing delay.
[0122] For example, see Figure 5 , Figure 5 A schematic diagram of a detection message provided in an embodiment of the present application. Assume that the client is integrated into a computing node, the storage system includes modules A, B and a disk, modules A and B are integrated into the computing node, the disk is integrated into the storage node, the first queuing information is the average queuing delay of the I / O request, and the second queuing information is the queuing delay of the I / O request in any queue. Figure 5As shown, at the source end of the storage system, the acquisition command, condition information, source end ID (Identity) and destination module ID fields are added to the content field of the detection message. When the source end sends a detection message to module A, the destination module ID is the ID of module A. After module A receives the detection message, it replaces the destination module ID field in the message with the performance data corresponding to module A, such as the second queue information, and adds the ID of the next destination module.
[0123] Among them, the acquisition command field indicates the performance parameters collected, such as latency, bandwidth, queue length, etc. The condition information field indicates the content of the first condition. After each module receives the detection message, it will determine whether the first condition is met based on the condition information field. Assuming that the detection message is transmitted to the disk, the disk will finally return the statistical information in the message to the source end of the storage system. The source end parses the performance data of different modules in the message and accumulates the queue delay to obtain the total queue delay of the I / O request in the current storage system.
[0124] For intuitive explanation, Figure 4 and Figure 5 The storage system includes a client (source end), module A, module B and a disk as an example. After the source end sends the detection message to module A, module A sends it to module B. In actual application, the storage system can build multiple different business modules according to actual needs. This is only an example and is not limited. In addition, corresponding to actual applications, the computing node can integrate the function of parsing and calculating the total queuing delay into any module on the entire I / O request path. The specific setting can be based on actual needs and is also not limited here.
[0125] Optionally, the first queuing information includes queuing information of the I / O request in a queue from the controller to the memory in the storage system.
[0126] In such Figure 4 In the storage system shown, the first queuing information can be understood as the queuing information of the I / O request in the queue from the controller to the storage in the storage system. After the computing node of the storage system receives the I / O request, based on the corresponding business needs, the controller of the computing node calls modules A and B to process the received I / O request. When the request volume of I / O requests exceeds the processing capacity of module A, the controller of the computing node stores the I / O request in the request cache queue of module A and waits for processing. After the I / O request is processed by the controller calling modules A and B, the I / O request will be transmitted to the hard disk to complete the transmission of the I / O request and the measurement of the queuing information on the entire I / O request path from the source to the hard disk.
[0127] In actual applications, the I / O request path may include: application layer, system call layer, virtual file system layer, file system layer, block device interface layer, driver layer, disk, etc. In some scenarios, certain specific layers in the I / O request path may be the focus of detection, while other layers do not need to be concerned. In this case, in order to improve detection efficiency and avoid detecting layers that are not of concern, the layer for detecting queue conditions can be set to a specific layer in the I / O request path. This example does not limit which layers in the I / O request path are the layers for detecting queue conditions, nor does it limit the number of layers.
[0128] After the computing node obtains the first queuing information, it determines the load of the storage system according to the first queuing information. When the load of the storage system is high, S304 is executed, and when the load of the storage system is low, S306 is executed. S304 and S306 are parallel steps. During actual execution, the computing node can select one of the steps to execute according to the load of the storage system.
[0129] S304: When determining that the load of the storage system is high, the computing node reduces the amount of I / O requests entering the storage system.
[0130] S306: When the computing node determines that the load of the storage system is low, the computing node increases the amount of I / O requests entering the storage system.
[0131] In step 304 and step 306, the computing node may select a corresponding method to control the amount of I / O requests entering the storage system based on the load of the storage system.
[0132] In a possible implementation, when the first queuing information is less than the target value of the first queuing information, the computing node increases the amount of I / O requests entering the storage system; when the first queuing information is greater than the target value, the computing node reduces the amount of I / O requests entering the storage system.
[0133] In this implementation, after obtaining the comparison result, the computing node immediately controls the I / O request volume when the first queuing information is greater than the target value to prevent too many I / O requests from entering the storage system for queuing, thereby ensuring that the storage system can still provide the maximum bandwidth and low latency to the outside world after being overloaded.
[0134] Exemplarily, when the first queuing information is less than the target value of the first queuing information, the computing node increases the amount of I / O requests entering the storage system to ensure that the storage system does not lose performance when overloaded. The amount of I / O requests entering the storage system may be:
[0135] X2=X1+α
[0136] Wherein, X2 is the amount of I / O requests allowed to enter the storage system after adjustment, X1 is the amount of I / O requests allowed to enter the storage system before adjustment, and α is the increased amount of I / O requests.
[0137] When the first queuing information is greater than the target value of the first queuing information, the computing node reduces the amount of I / O requests entering the storage system to control the performance range of the storage system under overload conditions, such as the range of latency, the range of bandwidth, etc. Taking the first queuing information as the average queuing latency as an example, the amount of I / O requests entering the storage system can be:
[0138]
[0139] Where X2 is the amount of I / O requests allowed to enter the storage system after adjustment, X1 is the amount of I / O requests allowed to enter the storage system before adjustment, β is the attenuation factor, β is greater than 0 and less than 1, t is the average queuing delay, t u is the target value of the average queuing delay.
[0140] It should be understood that when the first queuing information is equal to the target value of the first queuing information, it indicates that the current I / O request volume entering the storage system is relatively reasonable and does not need to be adjusted.
[0141] exist Figures 1a to 5 On the basis of the corresponding embodiments, in order to better implement the above solutions of the embodiments of the present application, the following also provides related devices for implementing the above solutions. Figure 6 , Figure 6 A schematic diagram of a structure of an overload control device of a storage system provided in an embodiment of the present application. The overload control device 6000 of the storage system may be located as follows Figure 1a or Figure 1b In the computing node shown. The overload control device 6000 of the storage system includes:
[0142] The processing module 6001 is used to obtain first queuing information of an input / output I / O request on the entire I / O request path in the storage system, where the first queuing information indicates a queuing status of the I / O request in a queue in the storage system;
[0143] A control module 6002, configured to reduce the amount of I / O requests entering the storage system when it is determined according to the first queuing information that the load of the storage system is high;
[0144] The control module 6002 is further configured to increase the amount of I / O requests entering the storage system when it is determined according to the first queuing information that the load of the storage system is low.
[0145] In a possible implementation, the processing module 6001 is further used to
[0146] Using the detection message to obtain the second queue information of the I / O request in the queue in the storage system;
[0147] The first queuing information is obtained according to the second queuing information of the I / O request in the queue within the storage system.
[0148] In a possible implementation, the processing module 6001 is further configured to:
[0149] The detection message is used to collect the second queue information corresponding to each of the first n layers of queues in the storage system of the I / O request, where n is a positive integer and the initial value of n is 2;
[0150] When the first condition is met, the corresponding second queue information of each of the first n layers of queues is obtained;
[0151] When the first condition is not met, n is incremented by 1, and the process returns to the step of using detection messages to collect second queuing information corresponding to each of the I / O requests in the first n layers of queues, where n is a positive integer.
[0152] In a possible implementation, the first condition includes at least one of the following:
[0153] The sum of the second queue information corresponding to the first n layers of queues is greater than the target delay; or,
[0154] The nth layer is the last layer in the entire I / O request path.
[0155] In a possible implementation, the processing module 6001 is further used to
[0156] Adding the second queue information of the I / O request in the queue in the storage system to obtain third queue information;
[0157] Get the total number of types corresponding to I / O requests;
[0158] The first queuing information is calculated based on the third queuing information and the total number.
[0159] In a possible implementation, the control module 6002 is also used to
[0160] When the first queuing information is less than the target value of the first queuing information, determining that the load of the storage system is low;
[0161] When the first queuing information is greater than the target value of the first queuing information, it is determined that the load of the storage system is high.
[0162] In a possible implementation, the first queuing information includes an average queuing delay of the I / O request.
[0163] In a possible implementation, the first queuing information includes an average queuing length of the I / O requests.
[0164] In a possible implementation, the first queuing information includes queuing information of the I / O request in a queue from a controller to a memory in the storage system.
[0165] In this embodiment, the operations performed by each unit in the overload control device 6000 of the storage system are the same as those described above. Figure 3 The method described in the illustrated embodiment is similar and can be used to implement the functions of the computing nodes in the above method embodiment, and can also achieve the beneficial effects possessed by the above method embodiment, which will not be described in detail here.
[0166] An embodiment of the present application also provides a computer-readable storage medium, including program instructions, which, when executed on a computing node, causes the computing node to execute any of the aforementioned method embodiments.
[0167] The embodiment of the present application also provides a computer program product. When the computer program product is run on a computer, the computer is enabled to execute any of the aforementioned method embodiments.
[0168] It is understood that the devices and methods described in the present application can also be implemented in other ways. For example, the device embodiments described above are only schematic, for example, the division of units is only a logical function division, and there may be other division methods in actual implementation, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.
[0169] The various embodiments in this specification are described in a progressive manner, and the same or similar parts between the various embodiments can be referenced to each other, and each embodiment focuses on the differences from other embodiments.
[0170] The naming or numbering of the steps in this application does not mean that the steps in the method flow must be executed in the time / logical sequence indicated by the naming or numbering. The named or numbered process steps can change the execution order according to the technical purpose to be achieved, as long as the same or similar technical effects can be achieved. The division of the units in this application is a logical division. There may be other division methods when implemented in actual applications. For example, multiple units can be combined or integrated into another system, or some features can be ignored or not executed. In addition, the coupling or direct coupling or communication connection between each other shown or discussed can be through some interfaces, and the indirect coupling or communication connection between units can be electrical or other similar forms, which are not limited in this application. In addition, the unit or subunit described as a separate component may or may not be physically separated, may or may not be a physical unit, or may be distributed in multiple circuit units, and some or all of the units can be selected according to actual needs to achieve the purpose of the present application solution.
[0171] The above is only a specific implementation mode of the present application, but the protection scope of the present application is not limited thereto. Any technician familiar with the technical field can easily think of changes or replacements within the technical scope disclosed in the present application, which should be included in the protection scope of the present application. The various digital numbers involved in the embodiments of the present application are only for the convenience of description and are not used to limit the scope of the embodiments of the present application. The size of the sequence number of the above-mentioned processes does not mean the order of execution. The execution order of each process should be determined by its function and internal logic.
[0172] The above embodiments are only used to illustrate the technical solutions of the present application, rather than to limit them. Although the present application has been described in detail with reference to the aforementioned embodiments, a person skilled in the art should understand that the technical solutions described in the aforementioned embodiments may still be modified, or some of the technical features may be replaced by equivalents. However, these modifications or replacements do not deviate the essence of the corresponding technical solutions from the scope of the technical solutions of the embodiments of the present application.
Claims
1. A method for overload control of a storage system, characterized in that: include: Acquire first queuing information of an input / output I / O request in a storage system, where the first queuing information indicates a queuing status of the I / O request in a queue in the storage system; When it is determined according to the first queuing information that the load of the storage system is high, reducing the amount of I / O requests entering the storage system; When it is determined according to the first queuing information that the load of the storage system is low, the amount of I / O requests entering the storage system is increased.
2. The method according to claim 1, characterized in that Acquiring first queuing information of the input / output I / O request in the storage system includes: Acquire second queuing information of the I / O request in the queue in the storage system by using a detection message; The first queuing information is obtained according to the second queuing information of the I / O request in the queue within the storage system.
3. The method according to claim 2, characterized in that Obtaining the first queuing information according to the second queuing information of the I / O request in the queue in the storage system includes: Adding the second queuing information of the I / O request in the queue in the storage system to obtain third queuing information; Get the total number of types corresponding to the I / O requests; The first queuing information is calculated based on the third queuing information and the total number.
4. The method according to any one of claims 1 to 3, characterized in that The method further comprises: When the first queuing information is less than the target value of the first queuing information, determining that the load of the storage system is low; When the first queuing information is greater than the target value of the first queuing information, it is determined that the load of the storage system is high.
5. The method according to any one of claims 1 to 4, characterized in that The first queuing information includes an average queuing delay of the I / O request.
6. The method according to any one of claims 1 to 4, characterized in that The first queuing information includes an average queuing length of the I / O request.
7. The method according to any one of claims 1 to 6, characterized in that The first queuing information includes queuing information of the I / O request in a queue from a controller to a memory in the storage system.
8. An overload control device for a storage system, characterized in that: include: A processing module, configured to obtain first queuing information of an input / output I / O request in a storage system, wherein the first queuing information indicates a queuing status of the I / O request in a queue in the storage system; a control module, configured to reduce the amount of I / O requests entering the storage system when it is determined according to the first queuing information that the load of the storage system is high; The control module is further configured to increase the amount of I / O requests entering the storage system when it is determined according to the first queuing information that the load of the storage system is low.
9. The device according to claim 8, characterized in that The processing module is further used for: Acquire second queuing information of the I / O request in the queue in the storage system by using a detection message; The first queuing information is obtained according to the second queuing information of the I / O request in the queue within the storage system.
10. The device according to claim 9, characterized in that The processing module is further used for: Adding the second queuing information of the I / O request in the queue in the storage system to obtain third queuing information; Get the total number of types corresponding to the I / O requests; The first queuing information is calculated based on the third queuing information and the total number.
11. The device according to any one of claims 8 to 10, characterized in that The control module is also used for: When the first queuing information is less than the target value of the first queuing information, determining that the load of the storage system is low; When the first queuing information is greater than the target value of the first queuing information, it is determined that the load of the storage system is high.
12. The device according to any one of claims 8 to 11, characterized in that The first queuing information includes an average queuing delay of the I / O request.
13. The device according to any one of claims 8 to 11, characterized in that The first queuing information includes an average queuing length of the I / O request.
14. The device according to any one of claims 8 to 13, characterized in that The first queuing information includes queuing information of the I / O request in a queue from a controller to a memory in the storage system.
15. A computing node, characterized in that: The method comprises a processor which runs program instructions in a memory to perform the method according to any one of claims 1 to 7.
16. A storage system, characterized in that: The storage system includes at least one computing node and a storage node. The computing node is used to execute the method according to any one of claims 1 to 7.