Flow control method, calculation and storage separation system, program product and electronic device
By monitoring the count of incomplete I/O requests and the number of data blocks in the compute-storage separation system, and setting dual threshold conditions to control traffic, the performance degradation caused by compute node processing performance and network congestion was resolved, achieving system stability and performance improvement under high load.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-12-17
- Publication Date
- 2026-03-27
AI Technical Summary
In a compute-storage separation architecture, the processing performance of compute nodes and network congestion affect the read and write performance of cloud disks, leading to a decrease in system resource utilization and overall performance, especially when there are a large number of unfinished read and write I/O requests, network congestion is aggravated.
By calculating the count of incomplete I/O requests and the number of target data blocks on the read/write path in real time on the second node of the storage separation system, and setting dual threshold conditions (first threshold condition and second threshold condition) to control traffic, the count of incomplete I/O requests and the number of target data blocks are kept within a reasonable range, thus avoiding network congestion and exhaustion of storage node resources.
It improves the system's stability and responsiveness under high load, reduces the risk of I/O request timeouts or failures, ensures system performance, and adapts to stable performance under different load scenarios.
Smart Images

Figure CN121742764A_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present disclosure relates to the field of computer technology, and more particularly, to a flow control method, a compute storage separation system, a computer program product and an electronic device. BACKGROUND
[0002] The computer storage separation architecture is a system architecture design separating the computing and storage functions. The computing node is specialized in processing computing tasks, and the storage node focuses on the storage and management of data. When a user uploads a file (referred to as writing disk), the computing node receives and processes the data, and the processed data is sent to the storage node for storage. When the user accesses these files (referred to as reading disk), the computing node retrieves the corresponding data from the storage node and transmits it to the user.
[0003] At present, the computing node is a node for providing network and data storage, and the processing performance, network congestion degree, etc. of the computing node itself will directly affect the read-write performance of the cloud disk. When a large number of unfinished read-write IO (Input / Output) requests are blocked on the path, network congestion will be aggravated, resulting in a decrease in the read-write performance of the cloud disk, and further affecting the utilization of system resources and the overall read-write performance of the system.
[0004] It should be noted that the information disclosed in the above background section is only used to strengthen the understanding of the background of the present disclosure, and therefore can include information that does not constitute prior art known to those of ordinary skill in the art. SUMMARY
[0005] The purpose of the present disclosure is to provide a flow control method, a compute storage separation system, a computer program product and an electronic device, which can effectively avoid system overload and ensure system performance.
[0006] Other characteristics and advantages of the present disclosure will become apparent from the following detailed description, or will be learned by practice of the present disclosure.
[0007] According to one aspect of the present disclosure, a flow control method is provided, which is applied to a compute storage separation system including a computing node and a storage node, the computing node including a first node and a second node, the first node being configured to run a computing task, and the second node being configured to provide a path for network and data storage to the first node. The method includes: in response to receiving a current read-write I / O request sent by the first node through the second node, calculating the number of unfinished I / O requests on the read-write path and the number of unfinished target data blocks on the read-write path, the read-write path being a data path between the second node and the storage node; and if the number of unfinished I / O requests meets a first threshold condition and the number of unfinished target data blocks meets a second threshold condition, sending the current read-write I / O request to the storage node through the second node.
[0008] In an example embodiment of the present disclosure, the first threshold condition comprises a count of outstanding I / O requests being less than a first count threshold; and the second threshold condition comprises a number of outstanding target data blocks being less than a second count threshold; wherein the second count threshold has a value greater than the first count threshold.
[0009] In an example embodiment of the present disclosure, the method further comprises: collecting, by the second node, key performance indicator data; and adjusting the first count threshold and / or the second count threshold based on the key performance indicator data.
[0010] In an example embodiment of the present disclosure, the current read-write I / O request carries a priority label, the priority label being used to indicate a processing priority of the current read-write I / O request; and the method further comprises: obtaining the first threshold condition and the second threshold condition corresponding to the priority label based on the priority label; wherein different priority labels have respective first threshold conditions and second threshold conditions.
[0011] In an example embodiment of the present disclosure, the current read-write I / O request comprises a read request and a write request, the read request and the write request having different first threshold conditions and second threshold conditions.
[0012] In an example embodiment of the present disclosure, the step of calculating the count of outstanding I / O requests on the read-write path comprises: obtaining a first count of I / O requests sent by the second node to the storage node; obtaining a second count of completed I / O requests received by the second node from the storage node; and determining the count of outstanding I / O requests based on the first count and the second count; wherein the first count and the second count are adjusted based on a number of I / O requests transmitted and received between the second node and the storage node.
[0013] In an example embodiment of the present disclosure, the step of calculating the number of outstanding target data blocks on the read-write path comprises: obtaining a first number of target data blocks sent by the second node to the storage node; obtaining a second number of completed target data blocks received by the second node from the storage node; and determining the number of outstanding target data blocks on the read-write path based on the first number and the second number; wherein the first number is updated based on a number of target data blocks corresponding to each I / O request sent by the second node to the storage node, and the second number is updated based on a number of target data blocks corresponding to each I / O request received by the second node from the storage node.
[0014] In an example embodiment of the present disclosure, when the second node receives a response of each I / O request sent by the storage node, the second node updates the second number according to the number of target data blocks corresponding to the completed I / O request, including: obtaining a ratio of a total length of each completed I / O request to a conversion factor corresponding to the target data block; rounding up the ratio to obtain a third number of target data blocks; and adding the third number to the second number to update the second number, wherein the updated second number is used to process the next I / O request.
[0015] In an example embodiment of the present disclosure, the method further includes: if at least one of the first threshold condition and the second threshold condition is not met, placing the current read-write I / O request into a waiting queue until the first threshold condition and the second threshold condition are both met.
[0016] According to an aspect of the present disclosure, a computing storage separation system is provided, the computing storage separation system including a computing node and a storage node, the computing node including a first node and a second node, the first node being configured to run a computing task, and the second node being configured to provide the first node with a network and a data storage path, wherein: the second node is configured to receive a current read-write I / O request sent by the first node, a count of uncompleted I / O requests on the read-write path, and a number of uncompleted target data blocks on the read-write path, the read-write path being a data path between the second node and the storage node; and the second node is further configured to execute: if the count of uncompleted I / O requests meets a first threshold condition, and the number of uncompleted target data blocks meets a second threshold condition, then sending, by the second node, the current read-write I / O request to the storage node.
[0017] According to an aspect of the present disclosure, a computer program product is provided, including a computer program, the computer program being executed by a processor to implement the method of any one of the above.
[0018] According to an aspect of the present disclosure, an electronic device is provided, including: a processor; and a memory for storing executable instructions of the processor; wherein the processor is configured to execute the method of any one of the above via execution of the executable instructions.
[0019] The flow control method in the exemplary embodiment of the present disclosure is applied to a compute storage separation system including a compute node and a storage node, the compute node including a first node for running a compute task and a second node for providing a network and data storage access to the first node. In response to receiving a current read-write I / O request sent by the first node through the second node, a count of outstanding I / O requests on a read-write path and a number of outstanding target data blocks on the read-write path are calculated, the read-write path being a data access path between the second node and the storage node. If the count of outstanding I / O requests meets a first threshold condition and the number of outstanding target data blocks meets a second threshold condition, the current read-write I / O request is sent to the storage node through the second node. By monitoring the count of outstanding I / O requests on the read-write path (the first threshold condition), it is ensured that the data access path between the second node and the storage node will not be saturated due to too many concurrent requests, avoiding network congestion or a decrease in the processing capacity of the storage node. By considering the number of outstanding target data blocks at the same time (the second threshold condition), the flow is controlled at the data block level, avoiding resource exhaustion of the storage node due to excessive data block operations, and improving the utilization efficiency of storage resources. Therefore, the limitation of single-point judgment is reduced by double condition checking, making the flow control more adaptive, reducing the risk of I / O request timeout or failure, enhancing the stability and response capability of the system under high load, and ensuring the performance of the system.
[0020] It should be understood that the foregoing general description and the following detailed description are only exemplary and explanatory, and are not restrictive of the present disclosure. BRIEF DESCRIPTION OF DRAWINGS
[0021] The above and other objects, features and advantages of the exemplary embodiments of the present disclosure will be more apparent from the following detailed description taken in conjunction with the accompanying drawings, in which:
[0022] Figure 1 An architecture diagram of a compute storage separation system according to an exemplary embodiment of the present disclosure is shown.
[0023] Figure 2 A flow chart of a flow control method according to an exemplary embodiment of the present disclosure is shown.
[0024] Figure 3 A flow chart of an implementation of calculating a count of outstanding I / O requests on a read-write path according to an exemplary embodiment of the present disclosure is shown.
[0025] Figure 4 A flow chart of an implementation of calculating a number of outstanding target data blocks on a read-write path according to an exemplary embodiment of the present disclosure is shown.
[0026] Figure 5 A diagram illustrating adjusting a first count and a second count according to an example embodiment of the present disclosure is shown.
[0027] Figure 6 A diagram illustrating adjusting a first number and a second number according to an example embodiment of the present disclosure is shown.
[0028] Figure 7 A diagram illustrating yet another architecture of a storage disaggregation system according to an example embodiment of the present disclosure is shown.
[0029] Figure 8 A block diagram of an electronic device according to an example embodiment of the present disclosure is shown.
[0030] In the drawings, the same or similar reference numerals refer to the same or similar parts. DETAILED DESCRIPTION
[0031] Example embodiments now will be described more fully hereinafter with reference to the accompanying drawings. Example embodiments, may, however, be implemented in many different forms and should not be construed as limited to the examples set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the example embodiments to those skilled in the art. Like reference numerals refer to like elements throughout the specification.
[0032] Moreover, the described features, structures, or characteristics can be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided to give a thorough understanding of embodiments of the disclosure. One skilled in the relevant art will recognize, however, that the techniques described herein can be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail in order to avoid obscuring aspects of the disclosure.
[0033] The block diagrams in the drawings show functions and functionality as they can be implemented in software or computer programs. However, implementing the functions and functionality in software or computer programs is only one way of implementing them and their implementation can depend on the entire system in which these functions and functionality are implemented. The block diagrams do not show the specific software or computer program techniques used to implement the functions and functionality, and one of ordinary skill in the software art will be able to implement the functions and functionality using software and computer programs without futher contribution from the present disclosure.
[0034] In a computer storage separation architecture, when a user uploads a file (referred to as writing disk), a computing node receives data and processes it, and the processed data is sent to a storage node for storage. When the user accesses these files (referred to as reading disk), the computing node retrieves the corresponding data from the storage node and transmits it to the user. The computing node is a node for providing network and data storage, and its processing performance, network congestion degree, etc. will directly affect the read-write performance of the cloud disk. When there are a large number of unfinished read-write I / O requests on the path, network congestion will be aggravated, leading to a decrease in the read-write performance of the cloud disk, and thus affecting the utilization of system resources and the overall read-write performance of the system.
[0035] As shown in the example of FIG. 1, the computing storage separation system includes a computing node and a storage node. Figure 1 FIG. 1 shows an architecture diagram of a computing storage separation system according to an example embodiment of the present disclosure. As shown in FIG. 1, the computing node includes a first node HOST (host system) and a second node SOC (chip system). The HOST runs the main computing task, and the SOC is responsible for implementing the network and data storage path. When writing disk, the HOST sends an I / O request to the SOC, which writes data to a remote storage node after processing. When reading disk, data is read from the BS node, and the SOC receives and processes it and sends it to the HOST. The SOC and the storage node communicate through the ROCE protocol (MAC layer). Figure 1
[0036] In this system architecture, the storage node, for example, is a BS node, which is a remote storage node. It is used to write disk data from the computing node to the disk array; when reading disk, it is responsible for reading data from the disk array and encapsulating it as a ROCE packet to send to the computing node. The computing node refers to a server for executing computing tasks. The SOC refers to a data path that provides the network and storage functions of the HOST and controls the flow. For example, for a HOST disk write request, read the write data from the HOST and encapsulate it as a ROCE packet to send to the BS node, which writes it to the associated disk after receiving it. For a HOST disk read request, first encapsulate the read request information as a ROCE (Remote Direct Memory Access) packet and send it to the BS node, and the BS node returns a ROCE packet carrying the read data, which is received and processed by the SOC and returned to the HOST to complete the read request.
[0037] It should be noted that the types of computing nodes and storage nodes in the example embodiments of the present disclosure can be determined according to the actual type of the computing storage separation system. The example embodiments of the present disclosure are described by taking the storage node as the BS node, the first node in the computing node as the HOST, and the second node as the SOC.
[0038] Wherein, since the I / O operation issued by the HOST needs to go through multiple links such as SOC processing, network transmission, BS node response, etc., the processing performance of the SOC itself, the network congestion degree, etc. will directly affect the read-write performance of the cloud disk, when a large number of unfinished I / O requests are blocked on the path, network congestion will be aggravated, leading to the decline of the read-write performance of the cloud disk, therefore, the SOC needs to reasonably manage and regulate data flow, effectively utilize system resources, reduce delay and congestion, so as to improve the overall read-write performance of the cloud disk. However, when controlling the flow based on the number of I / O requests, the number of pending unfinished I / O on the path is taken as the control dimension, when the HOST issues a large number of I / O requests, the SOC detects that the number of backends pending exceeds the threshold, and limits the number of newly issued I / O to avoid network link and BS node overload, and maintains system stability. However, the disk I / O length initiated by the HOST is different, the change range is from 128KB to 4KB, or even as low as 512B. When processing small-size I / O of 4KB length, in order to improve the IOPS (Input / Output Operations Per Seconds, number of read-write operations per second) performance, the SOC needs to set a higher pending threshold. However, when the HOST initiates large-size I / O of 128KB, a smaller number of pendings can reach the upper limit of the backend network bandwidth, at this time, the SOC continues to issue I / O, increases the number of pendings, and causes a large number of I / O requests to accumulate in the transmission path and the BS node. In this case, I / O delay will be significantly increased, and network congestion and packet loss may also occur, ultimately reducing the overall bandwidth performance of the cloud disk. On the contrary, if a smaller I / O pending threshold is set, the number of requests issued by the SOC is limited, which leads to the inability to fully utilize the network bandwidth and the processing capacity of the BS node, and further causes the decline of the IOPS performance. Therefore, this method cannot maintain stable performance in different scenarios in actual use.
[0039] When controlling by bandwidth, the SOC statistics the current bandwidth every certain time, for example, statistics the bandwidth of the issued I / O every 1ms, if it is greater than the upper limit of the network bandwidth, then reduce the transmission of I / O. But only the transmission rate can be controlled, the actual processing capacity of the backend network congestion and the BS node cannot be responded. Specifically, when the backend network is congested, the packet transmission delay increases, but the SOC still continuously sends I / O requests according to the maximum bandwidth threshold, which is equivalent to adding extra pressure on the basis of network congestion, leading to the further deterioration of the network state. When the I / O processing capacity of the BS node decreases, the continuous high-bandwidth request of the SOC will cause the request queue of the BS node to continuously accumulate, increasing the processing delay of the BS node.
[0040] Therefore, the two practices above both cause I / O delay to increase, and cause problems such as network packet loss and request retransmission, and finally cause the cloud disk read-write bandwidth to decrease, affecting system performance.
[0041] Based on this, the exemplary embodiments of the present disclosure provide a traffic control method applied to the computing and storage separation system described above, the computing and storage separation system including a computing node and a storage node, the computing node including a first node and a second node, the first node being configured to run a computing task, and the second node being configured to provide the first node with a network and a data storage access path. As shown in the figure, the traffic control method specifically includes: Figure 2 Step S210: in response to receiving, by the second node, a current read-write I / O request sent by the first node, counting the number of unfinished I / O requests on the read-write path and the number of unfinished target data blocks on the read-write path, the read-write path being a data access path between the second node and the storage node.
[0042] Step S220: if the number of unfinished I / O requests meets the first threshold condition, and the number of unfinished target data blocks meets the second threshold condition, sending, by the second node, the current read-write I / O request to the storage node.
[0043] The steps S210 and S220 are described in more detail below.
[0044] In step S210, in response to receiving, by the second node, a current read-write I / O request sent by the first node, counting the number of unfinished I / O requests on the read-write path and the number of unfinished target data blocks on the read-write path, the read-write path being a data access path between the second node and the storage node.
[0045] As described above, the first node is a computing unit in the system, responsible for executing business application programs and generating read-write I / O requests, and does not directly manage storage. The second node can be understood as a gateway or proxy between the computing side and the storage side, providing the first node with a unified network and data storage access path, and performing traffic control. The storage node is a node that provides final data persistence, which can be a distributed storage cluster, a cloud storage service, or a traditional storage array, such as a BS node. The read-write path refers to a data access path between the second node and the storage node, which can include network links and I / O queues inside the storage node, etc.
[0046] A current read-write I / O request is a single read or write request initiated by the first node at a certain time point and requiring access to the storage node. The number of outstanding I / O requests is a statistic of the total number of I / O requests that have been sent on the read-write path but have not yet received a complete response. The number of outstanding target data blocks is a data volume indicator for counting the total amount of data blocks involved in all outstanding I / O requests. A data block is the smallest unit of read-write of the storage system (e.g. 4KB, 1MB, etc.). The target data block can be determined according to the smallest unit of read-write of the storage system, for example, 4KB. Of course, considering that the memory management of modern operating systems generally uses 4KB as the size of the standard memory page, and the physical sector of the high-level format hard disk is 4KB, data transmission unpacking is convenient, etc., the target data block can be selected as 4KB. The exemplary embodiments of the present disclosure are described by taking 4KB as an example. In some optional cases, the target data block size can also be selected according to actual storage management and data transmission requirements.
[0047] Whenever the second node receives a new current read-write I / O request from the first node, the second node makes a flow control decision in response to the current read-write I / O request received by the second node. The second node needs to calculate the two indicators described above in real time. The number of outstanding I / O requests can be achieved by maintaining a counter, which is incremented by one each time a request is sent to the storage node. The number of outstanding target data blocks on the read-write path can also be achieved by maintaining a total byte count or data block count, which is added to the data volume of the request when the request is sent. The two indicators depict the real-time load state of the read-write path from different dimensions. A single indicator may have a blind spot. By combining the two indicators to achieve flow control, more accurate basis can be provided for flow control decisions.
[0048] In an exemplary embodiment, an implementation for calculating the number of outstanding I / O requests on the read-write path is also provided. As shown in Figure 3 The step of calculating the number of outstanding I / O requests on the read-write path can include: Step S310: Obtain a first count of I / O requests sent by the second node to the storage node.
[0049] At any time, the count of I / O requests sent by the second node to the storage node is the first count. The value of the first count records the total number of I / O requests sent to the storage node since the second node is started or the counter is reset. The first count is adjusted according to the number of I / O requests sent and received between the second node and the storage node. The count is immediately incremented by one each time the second node successfully sends an I / O request over the network.
[0050] Step S320: obtaining a second count of completed I / O requests received by the second node from the storage node.
[0051] The value of the second count records the total number of completed I / O requests received from the storage node since the second node is started or the counter is reset. Here, "completed" can refer to receiving a final response of the request. The second count can be adjusted according to the number of I / O requests transmitted and received between the second node and the storage node, and the count is immediately increased by 1 each time the second node receives a completion response of an I / O request from the storage node.
[0052] Step S330: determining the count of unfinished I / O requests based on the first count and the second count.
[0053] The difference between the first count and the second count can be obtained, that is, the count of unfinished I / O requests is determined.
[0054] According to the exemplary embodiments of the present disclosure, by calculating the difference between the cumulative counts of sent and confirmed requests, the exact number of pending requests on the read-write path can be accurately and timely reflected, ensuring the accuracy and reliability of the core data relied on by the traffic control decision, and providing a basis for subsequent threshold judgment. Moreover, the calculation cost of this calculation method is extremely low, which guarantees the overall throughput of the system under high load.
[0055] In an exemplary embodiment, an implementation manner for calculating the number of unfinished target data blocks on the read-write path is also provided, as shown in Figure 4 The number of unfinished target data blocks on the read-write path can include: Step S410: obtaining a first number of target data blocks sent by the second node to the storage node.
[0056] At any moment, the total number of data blocks involved in all I / O requests sent to the storage node but not yet received response. The value of the first number records the total number of target data blocks sent by the second node to the storage node since the system is started. Each time the second node sends an I / O request to the storage node, the number of target data blocks is converted according to the data size of the request, and is added to the first number, that is, the first number is updated according to the number of target data blocks corresponding to the sent I / O request each time the second node sends an I / O request to the storage node.
[0057] Step S420: obtaining a second number of completed target data blocks received by the second node from the storage node.
[0058] The second quantity records the number of target data blocks that the second node has received from the storage node and has confirmed to be completed in total since the system is started. Whenever the second node receives a completion response of an I / O request, the number of target data blocks corresponding to the completed I / O request is converted according to the data size of the completed I / O request and added to the second quantity. That is, the second quantity is updated according to the number of target data blocks corresponding to the completed I / O request each time the second node receives a response of an I / O request sent by the storage node.
[0059] In an exemplary embodiment, the updating of the second quantity according to the number of target data blocks corresponding to the completed I / O request each time the second node receives a response of an I / O request sent by the storage node can include: First, the ratio of the total length of each completed I / O request to the conversion factor corresponding to the target data block is obtained. Second, the ratio is rounded up to obtain a third quantity of target data blocks. Finally, the third quantity is added to the second quantity to update the second quantity, wherein the updated second quantity is used to process the next I / O request.
[0060] The total length of the completed I / O request is the total size of the data involved in a single completed I / O request, which can be in bytes. For example, it can be the total number of data bytes carried in a response of a read request, or the total number of data bytes written confirmed by a write request. The conversion factor is the byte length of a target data block. For example, if a target data block is defined as 4KB, the conversion factor is 4096 bytes. The rounding up is to round a decimal number up to the smallest integer not less than it, so that any size of I / O request, even if its data amount is less than a complete block, will be counted as consuming at least one data block of resources. That is, the third quantity obtained by rounding up is used to represent the number of target data blocks equivalent to the current completed I / O request, and then the third quantity corresponding to the current completed I / O request is added to the second quantity, i.e., the second quantity is updated, to be used for processing the next I / O request.
[0061] For example, for a 6KB I / O request, 6144 / 4096=1.5, which is rounded up to 2, so it is determined that the 6KB I / O request corresponds to 2 data blocks of 4KB size.
[0062] By rounding up the ratio of the total length of each I / O request to the conversion factor, it is ensured that any size of I / O request can be accurately counted in resource measurement, ensuring the integrity and authenticity of the number of unfinished data blocks relied on by flow control, and providing a built-in safety buffer for the entire system, making the flow control more defensive, triggering restrictions earlier and more actively, thereby effectively preventing system overload that may be caused by the subtle accumulation of load and enhancing the stability of the system.
[0063] Step S430: determining the number of target data blocks not completed on the read-write path based on the first number and the second number.
[0064] Similar to the I / O request count, the real-time load is obtained by calculating the difference between the two cumulative values, i.e., the difference between the first number and the second number, to obtain the number of target data blocks not completed on the read-write path.
[0065] According to the exemplary embodiments of the present disclosure, by counting the total amount of in-transit data in units of target data blocks, the bandwidth occupation and storage I / O throughput pressure on the read-write path can be directly and accurately quantified, so that the system can identify and prevent those requests with a large amount of data but not high concurrency, and achieve more accurate and comprehensive load perception than simply counting.
[0066] In step S220, if the number of outstanding I / O requests meets the first threshold condition and the number of target data blocks not completed meets the second threshold condition, the current read-write I / O request is sent to the storage node through the second node.
[0067] The first threshold condition is a judgment condition based on the number of outstanding I / O requests, and the second threshold condition is a judgment condition based on the number of target data blocks not completed.
[0068] When the second node receives the current read-write I / O request, if the first threshold condition and the second threshold condition are met at the same time, the current read-write I / O request is processed.
[0069] By simultaneously meeting the first threshold condition based on the number of I / O requests and the second threshold condition based on the number of data blocks, both high-concurrency small requests and low-concurrency large requests can be accurately identified and prevented, ensuring that the system remains stable under various load modes.
[0070] In an exemplary embodiment, the first threshold condition includes that the number of outstanding I / O requests is less than a first count threshold, and the second threshold condition includes that the number of target data blocks not completed is less than a second count threshold, wherein the value of the second count threshold is greater than the value of the first count threshold.
[0071] The first count threshold is a critical value set for the number of I / O requests, reflecting the maximum ideal concurrency request number that the read-write path can bear, and the second count threshold is a critical value set for the number of data blocks.
[0072] Optionally, the first threshold condition and the second threshold condition are related to factors such as network environment and processing capacity of the BS node, and can be configured according to the connection processing capacity of the storage node, the concurrency capacity of the network stack, etc., or can be flexibly set according to actual application experience or experimental test results.
[0073] For example, still taking the architecture shown in Figure 1 For example, still taking the architecture shown in FIG. 1, when the HOST issues an IO request, the SOC receives the IO request. The length of each IO request is different, and the SOC calculates the number of uncompleted I / O requests on the read-write path and the number of uncompleted target data blocks on the read-write path. When the number of uncompleted I / O requests meets a first count threshold and the number of uncompleted target data blocks meets a second count threshold, the SOC sends the current read-write I / O request to the storage node at this time.
[0074] The value of the second count threshold is greater than the value of the first count threshold, which means that the upper limit of the data amount is much higher than the upper limit of the request number in value. Based on this, when the length of the I / O request is very small (for example, 4KB), the first count threshold plays a limiting role at this time, and when the length of the I / O request is very large (for example, 128KB), the second count threshold plays a limiting role at this time, so that the performance of IOPS and bandwidth can be met through the limitation of the pending number in two dimensions, and the problem of network congestion caused by too many I / O numbers is avoided to affect the disk performance. Wherein, pending can refer to pending, to be processed, in the queue, used to indicate that the input / output request has been issued by the second node, but has not been completed by the storage node.
[0075] It can be understood that for small-size I / O requests, the first threshold condition can be mainly controlled to ensure that the system reaches the maximum IOPS performance, and for large-size I / O requests, the second threshold condition can be mainly controlled to ensure that the system reaches the maximum read-write bandwidth performance.
[0076] In an exemplary embodiment of the present disclosure, through the limitation of the pending number in two dimensions, system overload can be effectively avoided, and the system can ensure optimal performance in different scenarios of small-size I / O and large-size I / O.
[0077] In an exemplary embodiment, an implementation manner of dynamically determining the first count threshold and / or the second count threshold is also provided. The implementation manner comprises: collecting key performance indicator data by the second node; adjusting the first count threshold and / or the second count threshold according to the key performance indicator data.
[0078] The key performance indicator data is a measurable parameter reflecting the health status and performance of the read-write path of the compute-storage separation system, including but not limited to storage node I / O delay, storage node IOPS (such as the number of I / O operations per second processed by the storage node), network bandwidth utilization, I / O request timeout rate / error rate, etc. The first count threshold and the second count threshold can be adjusted based on the key performance indicator data. It can be understood that if the performance deteriorates (such as delay increases, error rate increases), the system determines that the current threshold is too loose, resulting in overload. At this time, the first count threshold and / or the second count threshold should be adjusted lower to more strictly limit the inflow of traffic and reduce the burden on the system. If the performance is excellent and there is a surplus (such as extremely low delay, low bandwidth utilization), the system determines that the current threshold may be too conservative and fails to fully utilize system resources. At this time, the first count threshold and / or the second count threshold can be adjusted higher to allow more concurrency and data flow, improving system throughput.
[0079] It should be understood that the adjusted first count threshold and / or second count threshold are applied to subsequent traffic control decisions, that is, a continuous optimization closed loop is achieved.
[0080] Optionally, a threshold adjustment strategy can be set in advance, and a fixed trigger threshold can be set for the key performance indicators. When the indicators exceed the threshold, the threshold is adjusted by a fixed step or proportion. For example, if the average I / O delay is greater than a first preset delay (e.g., 50 ms), the first count threshold = current value - 5, and the second count threshold = current value 0.9. If the average I / O delay is less than a second preset delay (e.g., 10 ms), the first count threshold = current value + 2, and the second count threshold = current value 1.05. Of course, the specific values of the increase and decrease can be set according to the actual application scenario.
[0081] Similarly, for bandwidth utilization, if the network bandwidth utilization is > a first utilization (e.g., 85%), then the second count threshold = current value 0.8, if the network bandwidth utilization is < a second utilization (e.g., 50%), then the second count threshold = current value 1.1, and the specific values of the increase and decrease can also be set according to the actual application scenario. Other key performance indicators are similar, and the adjustment of the first count threshold and / or the second count threshold is adjusted by the comprehensive result of the key performance indicators.
[0082] Optionally, a machine learning model can also be used to predict the optimal threshold configuration in the near future, taking historical and real-time key performance indicator data as input. A regression or classification model can be trained using historical data, with the goal of finding a combination of thresholds that can achieve high throughput and low latency at the same time. In actual application, the model outputs the recommended first count threshold and second count threshold in real time according to the current system state. The machine learning model can be constructed using a lightweight neural network, such as CNN (Convolutional Neural Network), RNN (Recurrent Neural Networks), DNN (Deep Neural Networks), etc. Alternatively, a machine learning model with a more complex network structure can also be used, such as a heavy neural network, such as Transformer (a language processing model), and any heavy neural network that can be used to predict the first count threshold and the second count threshold. Furthermore, the machine learning model can also be a large model with a size of billions, and LLM (Large Language Model) refers to a deep learning model trained using a large amount of data. The specific structure of the model is not particularly limited in the example embodiments of the present disclosure.
[0083] In the example embodiments of the present disclosure, by dynamically adjusting the first count threshold and the second count threshold according to the real-time collected performance indicators, the system can automatically adapt to changing load conditions and backend performance. By adjusting the first count threshold and the second count threshold independently or cooperatively, the system can accurately respond to different types of system bottlenecks. For example, when the bottleneck is in the processing capacity of the storage node, the first node threshold can be mainly lowered; when the bottleneck is in the network bandwidth, the second node threshold can be mainly lowered, so that the traffic control is more intelligent and effective through fine control capability.
[0084] In an example embodiment, the current read-write I / O request carries a priority label, which is used to indicate the processing priority of the current read-write I / O request. Based on this, the following is also included: According to the priority label, the corresponding first threshold condition and second threshold condition are obtained; wherein different priority labels have their own corresponding first threshold condition and second threshold condition.
[0085] The priority tag is metadata attached to the I / O request, used to identify the relative importance of the request in the system. It can be marked by the first node initiating the request according to the business semantics of the upper-layer application (such as a database, a web server). For example, a database can mark transaction log writing as high priority, and batch data export as low priority. Different priority tags have their respective first threshold conditions and second threshold conditions, which means that a set of flow control parameters is configured independently for each priority level, so that requests of different priorities have different threshold conditions for control.
[0086] The second node receives the current read-write I / O request from the first node and parses the priority tag carried by the request. The second node queries a priority-threshold mapping table according to the identified priority tag to obtain the first threshold condition and the second threshold condition corresponding to the priority. Then, the original double-condition judgment logic is executed to perform flow control using the threshold corresponding to the priority of the request.
[0087] Optionally, more relaxed thresholds can be configured for high-priority requests. When the system load is already high, high-priority requests still have a greater chance of being released, thereby ensuring their low latency and high success rate. Conversely, more stringent thresholds can be configured for low-priority requests. When the system load is slightly stressed, low-priority requests will be restricted first, thereby providing more processing opportunities for high-priority requests.
[0088] Optionally, the corresponding first threshold condition and second threshold condition can be obtained according to the priority tag before determining whether the count of uncompleted I / O requests meets the first threshold condition and whether the number of uncompleted target data blocks meets the second threshold condition.
[0089] As an example, high, medium, and low can be pre-set as three priorities. For example, when three I / O requests are reached, for high-priority requests (such as online payment), the first threshold condition and the second threshold condition corresponding to the high-priority requests are both met at this time, while the first threshold condition and the second threshold condition corresponding to the other two requests are not both met. Therefore, in this load, medium-priority and low-priority requests cannot pass, but high-priority requests can still pass unimpeded, realizing service differentiation.
[0090] By setting different threshold conditions for requests of different priorities, the system can prioritize the passability and service quality of high-priority requests when resources are scarce, while more strictly limiting low-priority requests.
[0091] In an exemplary embodiment, the current read-write I / O request includes read requests and write requests, and the read requests and the write requests have different first threshold conditions and second threshold conditions.
[0092] Among them, the read request is an I / O operation of obtaining data from the storage node, which is sensitive to delay. The write request is an I / O operation of storing data to the storage node. Two sets of flow control parameters can be independently configured for the two types of operations. For example, for read requests, the values of the first threshold condition and the second threshold condition can be set higher, allowing more read requests to be executed concurrently, fully utilizing the read parallelism of the storage node, reducing read delay, and allowing larger read data blocks to be transmitted, meeting real-time requirements. Correspondingly, for write requests, the values of the first threshold condition and the second threshold condition can be set relatively low, thereby limiting the number of write operations performed simultaneously, reducing the pressure on the storage node write cache and controlling the write queue depth, and controlling the write burst traffic to avoid a large amount of data being written in a short time to fill the network bandwidth and storage node I / O channel, and reserving necessary resources for read requests.
[0093] Specifically, when the second node receives a current read-write I / O request, it first determines whether the operation type is read or write, and then obtains the corresponding threshold from the pre-configuration according to the determined type, and then executes the original double-condition judgment logic using the threshold corresponding to the request type.
[0094] The exemplary embodiments of the present disclosure set different threshold conditions for read / write requests, identify and respond to the inherent differences between different types of I / O operations, ensure that the flow control strategy not only focuses on the physical load of the system, but also focuses on the business logic it carries, thereby improving the overall stability of the system.
[0095] In an exemplary embodiment, if at least one of the first threshold condition and the second threshold condition is not met, the current read-write I / O request is placed in a waiting queue, and is taken out for processing when both the first threshold condition and the second threshold condition are met.
[0096] The waiting queue is a data structure maintained internally, used to temporarily store I / O requests that cannot be immediately sent to the storage node due to flow control rules. It can be a first-in, first-out queue. When at least one of the two conditions, the first threshold condition and the second threshold condition, is not met in the flow control judgment, the I / O request is not processed immediately. The request can be determined whether to meet the first threshold condition and the second threshold condition by polling the memory of the second node. Then, the I / O request previously temporarily stored in the waiting queue is resubmitted to the flow control logic for judgment, and is sent to the storage node when the conditions are met.
[0097] Specifically, if either of the first threshold condition and the second threshold condition is not satisfied, the request will not be sent, but will be appended to the end of the waiting queue, and the request will remain in the queue waiting. At the same time, a monitoring check can also be performed. Optionally, each time the second node receives a completion response of an I / O request from the storage node, a monitoring check is triggered to attempt to take a request from the head of the waiting queue, and a complete double threshold condition judgment is performed again. If both conditions are satisfied at this time, the request is sent to the storage node. If either condition is still not satisfied, the request is put back to the head of the queue (or the queue remains unchanged), and waits for the next trigger.
[0098] The exemplary embodiments of the present disclosure temporarily store new requests when the system cannot process them temporarily, and automatically and orderly resumes processing after the system resources are released and the load is reduced, which not only protects the storage node of the backend, but also maximizes the protection of the final processing of the request.
[0099] The following takes a write operation as an example, based on Figure 1 The traffic control method of the exemplary embodiments of the present disclosure is described.
[0100] First, the HOST initiates a disk write operation to write to the memory of the SOC.
[0101] Second, the SOC polls the memory and finds a new disk write request (current read-write I / O request).
[0102] Among them, in response to receiving the current read-write I / O request sent by the HOST through the SOC, the number of uncompleted I / O requests on the read-write path and the number of uncompleted target data blocks on the read-write path are calculated, so as to judge whether to process the request.
[0103] Specifically, the step of calculating the number of uncompleted I / O requests on the read-write path includes obtaining a first count of I / O requests sent by the SOC to the storage node; obtaining a second count of completed I / O requests sent by the storage node (BS node) received by the SOC; and determining the number of uncompleted I / O requests based on the first count and the second count.
[0104] Among them, the first count and the second count are adjusted according to the number of I / O requests sent and received between the second node and the storage node. For example Figure 5 As shown, when the SOC processes the current read-write I / O request, the count variables io_send_cnt / io_done_cnt / io_pending_cnt are updated.
[0105] The number of target data blocks that are not completed on the read-write path comprises: obtaining a first number of target data blocks sent by the SOC to the storage node; obtaining a second number of completed target data blocks received by the SOC from the storage node; and determining the number of target data blocks that are not completed on the read-write path based on the first number and the second number. Taking 4KB as an example of the target data block.
[0106] Wherein, after the SOC sends each I / O request to the storage node, the first number is updated according to the number of target data blocks corresponding to the sent I / O request, and when the SOC receives the response of each I / O request sent by the storage node, the second number is updated according to the number of target data blocks corresponding to the completed I / O request. For example Figure 6 As shown, when the SOC processes the current read-write I / O request, the counting variables io_4k_send_cnt / io_4k_done_cnt / io_4k_pending_cnt are updated.
[0107] Wherein, when the length of the current read-write I / O request cannot be divided by 4KB, the data remaining less than 4KB is also regarded as 1 4KB for counting.
[0108] It should be understood that, Figure 5 And Figure 6 The updated counting variables shown are used to process the next I / O operation to calculate the related data.
[0109] After obtaining the number of I / O requests that are not completed on the read-write path and the number of target data blocks that are not completed on the read-write path, the first threshold condition and the second threshold condition are compared. If the number of I / O requests that are not completed satisfies the first threshold condition, and the number of target data blocks that are not completed satisfies the second threshold condition, the current read-write I / O request is sent to the storage node through the second node, otherwise the request is not processed, and the next polling is entered until the first threshold condition and the second threshold condition are satisfied at the same time.
[0110] Specifically, if the current io_pending_cnt<io_pending_max, and the current io_4k_pending_cnt<io_4k_pending_max, the request is processed. Otherwise, it is not processed.
[0111] It should be noted that the detailed details in the present example have been described in the above exemplary embodiments, and will not be repeated here.
[0112] The flow control method in the exemplary embodiments of the present disclosure ensures that the data path between the second node and the storage node will not be saturated by too many concurrent requests, avoids network congestion or a decrease in the processing capacity of the storage node, and controls the flow at the data block level by considering the number of uncompleted target data blocks (the second threshold condition), thereby avoiding resource exhaustion of the storage node due to excessive data block operations and improving the utilization efficiency of storage resources. Therefore, the limitations of single-point judgment are reduced by double-condition checking, making the flow control more adaptive, reducing the risk of I / O request timeout or failure, enhancing the stability and response capability of the system under high load, and ensuring system performance.
[0113] In the exemplary embodiments of the present disclosure, a computing and storage separation system is also provided. Referring to Figure 7 The system can include a computing node 710 and a storage node 720, wherein the computing node 710 includes a first node 7101 for running a computing task and a second node 7102 for providing a data path for the first node 7101 to access network and data storage. Specifically: The second node 7102 is configured to receive a current read-write I / O request sent by the first node 7101, calculate the number of uncompleted I / O requests on the read-write path and the number of uncompleted target data blocks on the read-write path, and the read-write path is the data path between the second node 7102 and the storage node 720. The second node 7102 is further configured to perform: if the number of uncompleted I / O requests meets the first threshold condition and the number of uncompleted target data blocks meets the second threshold condition, sending the current read-write I / O request to the storage node 720 through the second node 7102.
[0114] In an exemplary embodiment of the present disclosure, the first threshold condition includes that the number of uncompleted I / O requests is less than a first count threshold; the second threshold condition includes that the number of uncompleted target data blocks is less than a second count threshold; and the value of the second count threshold is greater than the value of the first count threshold.
[0115] In an exemplary embodiment of the present disclosure, the second node is further configured to perform: collecting key performance indicator data through the second node; and adjusting the first count threshold and / or the second count threshold according to the key performance indicator data.
[0116] In an example embodiment of the present disclosure, the current read-write I / O request carries a priority label, the priority label being used to indicate a processing priority of the current read-write I / O request; the second node is further configured to perform: obtaining a corresponding first threshold condition and a second threshold condition according to the priority label; wherein different priority labels have respective corresponding first threshold conditions and second threshold conditions.
[0117] In an example embodiment of the present disclosure, the current read-write I / O request includes a read request and a write request, the read request and the write request having different first threshold conditions and second threshold conditions.
[0118] In an example embodiment of the present disclosure, the step of calculating the count of the unfinished I / O requests on the read-write path includes: obtaining a first count of the I / O requests sent by the second node to the storage node; obtaining a second count of the completed I / O requests received by the second node from the storage node; determining the count of the unfinished I / O requests based on the first count and the second count; wherein the first count and the second count are adjusted according to the number of the I / O requests transmitted and received between the second node and the storage node.
[0119] In an example embodiment of the present disclosure, the step of calculating the number of the unfinished target data blocks on the read-write path includes: obtaining a first number of the target data blocks sent by the second node to the storage node; obtaining a second number of the completed target data blocks received by the second node from the storage node; determining the number of the unfinished target data blocks on the read-write path based on the first number and the second number; wherein the second node updates the first number according to the number of the target data blocks corresponding to the sent I / O request after sending each I / O request to the storage node, and updates the second number according to the number of the target data blocks corresponding to the completed I / O request when receiving the response of each I / O request sent by the storage node.
[0120] In an example embodiment of the present disclosure, the step of updating the second number according to the number of the target data blocks corresponding to the completed I / O request when the second node receives the response of each I / O request sent by the storage node includes: obtaining a ratio of the total length of each completed I / O request to a conversion factor corresponding to the target data block; rounding up the ratio to obtain a third number of target data blocks; and adding the third number to the second number to update the second number, wherein the updated second number is used to process the next I / O request.
[0121] In an example embodiment of the present disclosure, the second node 7102 is further configured to perform: if at least one of the first threshold condition and the second threshold condition is not met, putting the current read-write I / O request into a waiting queue until the first threshold condition and the second threshold condition are both met.
[0122] Since the detailed content of each functional module or node of the compute storage separation system of the example embodiments of the present disclosure has been described in the example embodiments of the traffic control method described above, it will not be described here again.
[0123] It should be noted that although several modules or nodes of the compute storage separation system are mentioned in the above detailed description, such division is not mandatory. In fact, according to the embodiments of the present disclosure, the features and functions of two or more modules or nodes described above can be embodied in one module or unit. Conversely, the features and functions of one module or node described above can be further divided into embodied by multiple modules or nodes.
[0124] The example embodiments of the present disclosure also provide a computer program product. The computer program product includes a computer program which, when executed by a processor, implements the traffic control method described above.
[0125] In an embodiment, the computer program product can be a tangible product containing the computer program, such as a computer readable storage medium storing the computer program. The readable storage medium can be a storage medium based on electrical, magnetic, optical, electromagnetic, infrared, etc. signals, including but not limited to: random access memory (RAM), read-only memory (ROM), magnetic tape, floppy disk, flash memory (Flash), mechanical hard disk (HDD), solid state disk (SSD), etc. For example, the computer program product can be implemented as a non-volatile storage medium storing the computer program, such as a read-only memory, a Nand flash memory, etc.
[0126] In an embodiment, the computer program product can be an intangible product containing the computer program. For example, the computer program product can be implemented as a virtual digital product, such as an executable file, an installation package, etc. digital file storing the computer program.
[0127] The code of the computer program can be written in one or more programming languages. The program code can be executed entirely on the user computing device, or partially on the user computing device, or as a separate software package, or partially on the user computing device and partially on a remote computing device, or entirely on a remote computing device or server. In the case involving a remote computing device, the remote computing device can be connected to the user computing device through any kind of network, such as a local area network (LAN), a wide area network (WAN), etc., or can be connected to an external computing device (for example, through an Internet connection provided by an operator).
[0128] A computer program can be carried by a signal bearing medium or transmission. The electronic device can convert the signal bearing computer program into a digital signal, and then run the computer program. When the computer program is run on the electronic device, the code thereof is used to make the electronic device execute (more specifically, can make the processor of the electronic device execute) the method steps of various exemplary embodiments of the present disclosure, such as the steps of the flow control method described above.
[0129] In addition, in the exemplary embodiments of the present disclosure, an electronic device capable of implementing the above method is also provided. Those skilled in the art can understand that various aspects of the present disclosure can be implemented as a system, a method or a program product. Therefore, various aspects of the present disclosure can be embodied as a complete hardware embodiment, a complete software embodiment (including firmware, microcode, etc.), or an embodiment combining hardware and software aspects, which can be collectively referred to as "circuitry", "module" or "system" here.
[0130] The electronic device 800 according to this embodiment of the present disclosure will be described below with reference to Figure 8 Figure 8 The display electronic device 800 is only an example and should not bring any limitation to the function and use range of the embodiments of the present disclosure.
[0131] As shown in Figure 8 The components of the electronic device 800 can include, but are not limited to, the above-mentioned at least one processing unit 810, the above-mentioned at least one storage unit 820, a bus 830 connecting different system components (including the storage unit 820 and the processing unit 810), and a display unit 840.
[0132] The storage unit stores program code that can be executed by the processing unit 810, so that the processing unit 810 performs the steps described in the above "Exemplary Method" section of the present specification according to various exemplary embodiments of the present disclosure.
[0133] The storage unit 820 can include a readable medium in the form of a volatile storage unit, such as a random access memory (RAM) 821 and / or a cache memory unit 822, and can further include a read-only memory (ROM) 823.
[0134] The storage unit 820 can also include program / utility 824 having a set of (at least one) program modules 825, including but not limited to, an operating system, one or more application programs, other program modules, and program data, each of which or a combination thereof can include implementation of a network environment.
[0135] Bus 830 can be one of several types of bus structures including a memory bus or memory controller, a peripheral bus, a graphics bus, a processor or local bus using any of a variety of bus structures, and the like.
[0136] Electronic device 800 can also communicate with one or more external devices 900 such as a keyboard or pointing device, a Bluetooth device, etc.; one or more devices 905 that enable a user to interact with electronic device 800; and / or one or more devices 910 that enable electronic device 800 to communicate with one or more other computing devices. Such communication can occur via input / output (I / O) interface 850. Still yet, electronic device 800 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and / or a public network (e.g., the Internet) via network adapter 860. As depicted, network adapter 860 communicates with the other components of electronic device 800 via bus 830. It should be appreciated that although not shown, other hardware and / or software modules could be used in conjunction with electronic device 800. Examples, include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
[0137] Those skilled in the art will readily observe that the example embodiments described herein can be implemented in software and / or hardware using the systems and methods described above. Accordingly, an embodiment of the present disclosure can take the form of a software program having a computer-readable medium including computer-executable instructions embodied in the medium. The software program can be stored in a non-volatile storage medium, such as a floppy disk drive, a hard disk drive, a CD-ROM, a USB flash drive, or any other computer-readable medium, and loaded into the computer or other processing means using the hard drive or other storage device. The software program can then be accessed by the computer or other processing means and loaded into the main memory 820 for execution by the processing unit 810.
[0138] In addition, the above-described flowcharts are merely illustrative examples of the processes involved in the methods according to the example embodiments of the present disclosure, and are not intended to limit the purposes of the processes. It is readily understood that the processes shown in the above-described flowcharts do not indicate or limit the time sequence of the processes. In addition, it is readily understood that the processes can be executed synchronously or asynchronously, for example, in multiple modules.
[0139] Other embodiments of the disclosure will be apparent to those skilled in the art from consideration of the specification and practice of the features of the disclosure disclosed herein. It is intended that the specification and examples be considered as exemplary only, with the true scope and spirit of the disclosure being indicated by the following claims.
Claims
1. A flow control method, characterized by, The application is applied to a compute storage decoupled system, the compute storage decoupled system comprises a compute node and a storage node, the compute node comprises a first node and a second node, the first node is used for running a compute task, and the second node is used for providing a network and data storage access to the first node, and the method comprises: In response to receiving a current read-write I / O request sent by the first node through the second node, counting the number of unfinished I / O requests on a read-write path and the number of unfinished target data blocks on the read-write path, the read-write path being a data access path between the second node and the storage node; If the number of unfinished I / O requests meets a first threshold condition, and the number of unfinished target data blocks meets a second threshold condition, then sending the current read-write I / O request to the storage node through the second node.
2. The method of claim 1, wherein, The first threshold condition comprises that the number of unfinished I / O requests is less than a first count threshold; and the second threshold condition comprises that the number of unfinished target data blocks is less than a second count threshold. The value of the second count threshold is greater than the value of the first count threshold.
3. The method of claim 2, wherein, The method further comprises: Collecting key performance indicator data through the second node; According to the key performance indicator data, adjusting the first count threshold and / or the second count threshold.
4. The method of claim 2, wherein, The current read-write I / O request carries a priority label, and the priority label is used to indicate the processing priority of the current read-write I / O request. The method further comprises: According to the priority label, obtaining corresponding first threshold conditions and second threshold conditions; wherein different priority labels have their own corresponding first threshold conditions and second threshold conditions.
5. The method of claim 2, wherein, The current read-write I / O request comprises a read request and a write request, and the read request and the write request have different first threshold conditions and second threshold conditions.
6. The method of claim 1, wherein, The step of counting the number of unfinished I / O requests on the read-write path comprises: Obtaining a first count of I / O requests sent by the second node to the storage node; Obtaining a second count of completed I / O requests received by the second node from the storage node; Based on the first count and the second count, determining the number of unfinished I / O requests; The first count and the second count are adjusted according to the number of I / O requests transmitted and received between the second node and the storage node.
7. The method of claim 1, wherein, The step of counting the number of unfinished target data blocks on the read-write path comprises: Obtaining a first number of target data blocks sent by the second node to the storage node; Obtaining a second number of completed target data blocks received by the second node from the storage node; Based on the first number and the second number, determining the number of unfinished target data blocks on the read-write path; The second node updates the first quantity according to the number of target data blocks corresponding to the sent I / O requests, and the second node updates the second quantity according to the number of target data blocks corresponding to the completed I / O requests when the second node receives the response of each I / O request sent by the storage node.
8. The method of claim 7, wherein, The second node updates the second quantity according to the number of target data blocks corresponding to the completed I / O requests when the second node receives the response of each I / O request sent by the storage node, including: obtaining the ratio of the total length of each completed I / O request to the conversion factor corresponding to the target data block; rounding up the ratio to obtain a third number of target data blocks; adding the third number to the second quantity to update the second quantity, wherein the updated second quantity is used to process the next I / O request.
9. The method according to any one of claims 1 to 8, characterized in that, The method further includes: If at least one of the first threshold condition and the second threshold condition is not met, the current read-write I / O request is put into a waiting queue until the first threshold condition and the second threshold condition are both met.
10. A computing storage disaggregation system, comprising: The computing storage separation system includes a computing node and a storage node, the computing node includes a first node and a second node, the first node is used to run a computing task, and the second node is used to provide a network and data storage access for the first node, wherein: The second node is configured to receive the current read-write I / O request sent by the first node, count the number of unfinished I / O requests on the read-write path and the number of unfinished target data blocks on the read-write path, and the read-write path is a data access path between the second node and the storage node. The second node is further configured to execute: if the number of unfinished I / O requests meets the first threshold condition and the number of unfinished target data blocks meets the second threshold condition, the current read-write I / O request is sent to the storage node through the second node.
11. A computer program product comprising a computer program, characterized in that, The computer program is executed by the processor to implement the method of any one of claims 1 to 9.
12. An electronic device, comprising: including: a processor; and a memory for storing executable instructions of the processor; wherein the processor is configured to execute the method of any one of claims 1 to 9 by executing the executable instructions.