Data channel updating method and related equipment
By dynamically adjusting the connection status of DCI in RDMA, the connection scalability problem caused by the increase in computing cluster size is solved, the number of connection establishment and disconnection is reduced, and communication performance is improved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- CHENGDU HUAWEI TECH CO LTD
- Filing Date
- 2024-10-31
- Publication Date
- 2026-05-08
AI Technical Summary
In RDMA, reliable connection transmission faces connection scalability issues as the computing cluster grows, leading to frequent connection establishment and termination operations that increase latency and affect communication performance.
By obtaining the connection status of the dynamic connection initiator DCI corresponding to the process, the number of DCIs can be dynamically adjusted, including creating, deleting, and updating DCIs, in order to reduce the number of connection establishment and disconnection and optimize the DCI usage strategy.
It effectively reduces the increase in latency caused by the increase in the size of the computing cluster, and improves the connection scalability and communication performance of RDMA.
Smart Images

Figure CN121996394A_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of computer technology, and in particular to a data channel update method and related equipment. Background Technology
[0002] Remote direct memory access (RDMA) is one of the most widely used technologies in the computing field. RDMA allows a computer to directly access the memory of a remote computer without involving the remote computer's operating system or central processing unit (CPU), offering advantages such as high bandwidth and low latency. RDMA supports various communication service protocols, including reliable connection transmission and unreliable datagrams.
[0003] The Reliable Connection (RC) protocol is based on a queue pair (QP) communication model. In a computing cluster, each QP in a process establishes a connection with another remote process QP. In this case, relevant information about the QP is recorded in the queue pair context (QPC). RC is widely used due to its advantages, such as supporting various communication semantics of RDMA and reliable transmission.
[0004] However, due to the limited cache capacity on the network card, as the computing cluster grows, a large number of QPC cache misses occur, requiring the retrieval of the corresponding QPC from main memory, which severely impacts communication performance. Therefore, reliable connection transmission in RDMA faces serious connection scalability issues. Summary of the Invention
[0005] This application provides a data channel update method and related equipment, which can improve the connection scalability of reliable connection transmission in RDMA.
[0006] Firstly, a data channel update method is provided, which includes: obtaining the connection status of the dynamic connection initiator DCI corresponding to the process, the connection status including the connection establishment status; wherein, after the DCI establishes a connection with the receiving end, it is in the connection establishment status, and the process sends data to the receiving end corresponding to the DCI through the DCI in the connection establishment status; and updating the DCI corresponding to the process according to the connection status of the DCI corresponding to the process.
[0007] As shown above, updating the DCI corresponding to a process based on its connection status and dynamically adjusting the number of DCIs can avoid frequent connection establishment and disconnection issues in DC communication mode due to the expansion of the computing cluster, effectively reducing latency caused by connection establishment and disconnection. This solves the problem of increased latency due to the increased number of connection establishment and disconnection cycles as the computing cluster grows, thus limiting the expansion of the computing cluster and improving the connection scalability of RDMA's reliable connection transmission mode.
[0008] In one possible implementation, a first quantity is obtained; the first quantity is the number of DCIs in the connection-establishing state in the process's corresponding DCI; if the first quantity exceeds a first threshold, a first DCI is created; wherein, the connection state of the first DCI is a disconnected state; the disconnected state indicates that the DCI has no corresponding receiver.
[0009] As shown above, when the number of DCIs in the connection-establishing state within a process exceeds the second threshold, and the process continues to establish connections and send data with different receivers, it is necessary to disconnect the already established DCIs so that the disconnected DCIs can continue to establish connections and send data with different receivers. In this case, creating the first DCI can effectively reduce the number of times the process's corresponding DCIs disconnect and reconnect, thereby reducing latency.
[0010] In one possible implementation, a second quantity is obtained; the second quantity is the number of DCIs corresponding to each process in the computing node where the process resides; if the second quantity exceeds the upper limit threshold, the first delay of the process sending data is obtained; the first delay is the delay of the process sending data before the creation of the first DCI; the second delay of the process sending data is obtained, the second delay is the delay of the process sending data after the creation of the first DCI; if the second delay is greater than the first delay, the first DCI is deleted.
[0011] As shown above, creating the first DCI during process execution and increasing the number of DCIs corresponding to the process can effectively reduce the number of connection failures and establishments, thus lowering latency. However, for common RDMA network cards, the on-chip cache is fixed. That is, there is an upper limit to the number of DCIs that an RDMA network card can hold. The upper limit threshold represents the maximum number of DCIs that the RDMA network card can cache. When the total number of DCIs corresponding to the compute node where the process resides exceeds the upper limit threshold, the process needs to access main memory during the process of establishing a connection and sending data via DCIs, thus increasing latency and causing performance degradation. By comparing the latency of compute node data transmission before and after creating the first DCI, the number of first DCI creations can be balanced, as can the latency of compute node data transmission, further improving the connection scalability of the DC transmission mode.
[0012] In one possible implementation, a third quantity is obtained; the third quantity is the number of DCIs in the process's corresponding DCI that are in a disconnected state; the disconnected state indicates that the DCI has no corresponding receiver; if the third quantity exceeds a second threshold, the second DCI is deleted; the connection state of the second DCI is a disconnected state.
[0013] As can be seen from the above, if the number of DCIs in the DCI corresponding to the process exceeds the second threshold during process execution, since the DCIs in the disconnected state have no corresponding remote end, deleting the second DCI will not affect the normal operation of the process. Moreover, it can release the number of DCIs corresponding to the computing node where the process is located, create space for the first DCI to be released for other processes on the computing node, reduce the latency of data transmission corresponding to the computing node, and improve transmission performance.
[0014] In one possible implementation, the DCI corresponding to the process includes the target DCI; the target DCI and the target receiver are in a linked state and the link remains open even after data is sent.
[0015] As shown above, a typical process includes target receivers that periodically send data, target receivers that send data intermittently, or target receivers used to send control messages, etc. Therefore, to reduce the number of connection establishments, a connection is established between the target DCI and the target receiver, reducing latency and thus improving performance.
[0016] In one possible implementation, the first transmission task corresponding to the process is obtained; a link is established with the receiver corresponding to the process through the updated DCI, so that the updated DCI is in the link-established state; data is sent to the receiver corresponding to the process through the updated DCI; and an acknowledgment packet is received from the receiver corresponding to the process.
[0017] As can be seen from the above, when the process executes the first transmission task, it establishes a connection with the receiving end corresponding to the process through the updated DCI and sends data. It can also receive the response packet returned by the receiving end corresponding to the process, ensuring that the data can be successfully sent and guaranteeing the reliability of the transmission.
[0018] In one possible implementation, the connection between the updated DCI and the receiver corresponding to the process is disconnected, thus putting the DCI in a disconnected state.
[0019] As shown above, after the compute node receives the response packet from the receiver corresponding to the process, it releases the DCI. The compute node then disconnects the updated DCI from the receiver corresponding to the process, restoring the DCI to a disconnected state, so that it can establish a connection with different receivers and send data.
[0020] In one possible implementation, a process-specific DCI is created based on the process's runtime history.
[0021] As shown above, before starting the process, the number of receivers that sent data during the process's historical execution time is obtained based on the process's running history. Based on this number, a corresponding number of DCIs are created. This reduces the number of connection establishment and terminations during data transmission, thus reducing latency.
[0022] Secondly, a data channel update device is provided. Embodiments of this application can divide the data channel update device into functional modules based on the method provided in the first aspect. For example, each function can be divided into its own functional modules, or two or more functions can be inherited into one module. For instance, embodiments of this application can divide the data channel update device into an acquisition module and a processing module according to their functions. Descriptions of the possible technical solutions and beneficial effects of the various functional modules described above can be found in the technical solutions provided in the first aspect or its corresponding possible implementations, and will not be repeated here.
[0023] Thirdly, embodiments of this application provide a computing node, which includes a processor and a memory for storing processor-executable instructions; the processor is configured to execute instructions, causing the computing node to perform the aforementioned data channel update method.
[0024] Fourthly, embodiments of this application provide a computer-readable storage medium storing at least one computer program, which is loaded and executed by a processor to implement the data channel update method as described in the first aspect above.
[0025] Fifthly, embodiments of this application provide a computer program product or computer program including computer instructions stored in a computer-readable storage medium. A processor of a computing node reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computing node to perform the data channel update method provided in the various optional implementations of the first aspect described above.
[0026] For a detailed description of the second to fifth aspects and their various implementations in the embodiments of this application, please refer to the detailed description in the first aspect and its various implementations; and for a detailed description of the beneficial effects of the second to fifth aspects and their various implementations, please refer to the beneficial effect analysis in the various implementations of the first aspect, which will not be repeated here.
[0027] These or other aspects of the embodiments of this application will become more apparent in the following description. Attached Figure Description
[0028] Figure 1 A schematic diagram of a computing cluster 100 provided by related technologies is shown;
[0029] Figure 2 This diagram illustrates a communication principle diagram of an RDMA DC communication mode connection provided by related technologies;
[0030] Figure 3 A schematic diagram of an RDMA DC connection establishment and packet sending process provided by related technologies is shown;
[0031] Figure 4 This diagram illustrates the memory usage of different RDMA transport protocols provided by related technologies as the size of the computing node increases;
[0032] Figure 5 A schematic diagram of the hardware structure of a computing node 110 provided in an embodiment of this application is shown;
[0033] Figure 6 A flowchart illustrating a data channel update method provided in an embodiment of this application is shown;
[0034] Figure 7 A schematic diagram of a target DCI connection communication process provided in an embodiment of this application is shown;
[0035] Figure 8 A schematic diagram of an updated DCI provided by an embodiment of this application is shown;
[0036] Figure 9 A schematic diagram of a dynamic reliable connection operation provided in an embodiment of this application is shown;
[0037] Figure 10 A schematic diagram of the structure of a data channel update device 400 provided in an embodiment of this application is shown. Detailed Implementation
[0038] The technical solutions of the embodiments of this application will be described below with reference to the accompanying drawings. In the description of this application, unless otherwise stated, " / " indicates that the objects before and after are in an "or" relationship. For example, A / B can represent A or B. "And / or" in this application is merely a description of the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can represent: A alone, A and B simultaneously, and B alone, where A and B can be singular or plural. Furthermore, in the description of this application, unless otherwise stated, "multiple" refers to two or more. "At least one of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one of a, b, or c can represent: a, b, c, ab, ac, bc, or abc, where a, b, and c can be single or multiple. In addition, in order to clearly describe the technical solutions of the embodiments of this application, the terms "first" and "second" are used in the embodiments of this application to distinguish the same or similar items with basically the same function and effect.
[0039] Those skilled in the art will understand that the terms "first," "second," etc., do not limit the quantity or order of execution, and that "first," "second," etc., are not necessarily different. Furthermore, in some embodiments of this application, words such as "exemplary" or "for example" are used to indicate that something is being described as an example, illustration, or description. Any embodiment or design scheme described as "exemplary" or "for example" in the embodiments of this application should not be construed as being more preferred or advantageous than other embodiments or design schemes. Specifically, the use of words such as "exemplary" or "for example" is intended to present the relevant concepts in a concrete manner for ease of understanding.
[0040] Furthermore, the device architecture and business scenarios described in the embodiments of this application are for the purpose of more clearly illustrating the technical solutions of the embodiments of this application, and do not constitute a limitation on the technical solutions provided in the embodiments of this application. As those skilled in the art will know, with the evolution of device architecture and the emergence of new business scenarios, the technical solutions provided in the embodiments of this application are also applicable to similar technical problems.
[0041] First, the application scenarios of the embodiments of this application will be introduced by way of example.
[0042] Remote direct memory access (RDMA) is one of the most widely used technologies in the computing field. RDMA allows a computer to directly access the memory of a remote computer without involving the remote computer's operating system or central processing unit (CPU), offering high bandwidth and low latency. RDMA is suitable for use in computing clusters, providing powerful computing capabilities for high-performance computing (HPC), artificial intelligence, and machine learning. Figure 1 A schematic diagram of a computing cluster 100 provided by related technologies is shown. For example... Figure 1 As shown, the computing cluster 100 includes multiple computing nodes 110, which communicate with each other using RDMA technology. Applications can run on the computing nodes 110, and these applications include multiple processes. For example, each computing node 100 can be a standard general-purpose server, specifically a blade server, high-density server, rack server, or high-performance server, etc.
[0043] RDMA application protocols include Infiniband (IB), Remote Direct Memory Access over Converged Ethernet (RoCE), RoCEv2, and Internet Wide Area RDMA Protocol (iWARP). The basic communication unit of RDMA is a QP. Each QP includes a send queue (SQ) and a receive queue (RQ). The send queue (SQ) is used to send data, and the receive queue (RQ) is used to receive data.
[0044] There are many communication models for QP. In the RDMA field, it is called a "Type of Service." In the IB protocol, a Type of Service is described through two dimensions: "reliability" and "connectivity." Reliable service guarantees accurate and error-free data transmission between the sender and receiver. In this case, any computing node 110 in the computing cluster 100 can act as either a sender or receiver. IB ensures transmission reliability through acknowledgment, data verification, and ordering mechanisms. The acknowledgment mechanism means that after receiving a data packet, the receiver returns an acknowledgment message (ACK) to the sender. Optionally, the receiver does not need to reply after receiving every data packet; it can reply with ACKs for multiple data packets at once. The data verification mechanism means that the sender obtains a checksum using a specific algorithm and places it at the end of the data packet; after receiving the data packet, the receiver calculates the checksum using a specific algorithm and compares it. If they do not match, it indicates a transmission error. The ordering mechanism ensures that data packets sent earlier are received by the receiver before data packets sent later.
[0045] Connection services can be abstracted as establishing a communication pipeline. Once the pipeline is established, data sent from the sending end will definitely reach the receiving end along the pipeline. For connection services, each QP establishes a connection with another QP on a remote node. In this case, the QPC contains the QP information of the remote node. During the communication establishment process, the two nodes exchange peer information, including QPs used later for communication. In connection service types, each QP establishes a connection with only one other QP, meaning that the destination of each work queue event (WQE) issued by each QP is unique. Therefore, RC, as a connection-oriented reliable transport, supports various communication semantics and reliable connections of RDMA and is widely used in parallel application programming models.
[0046] However, in connection-oriented RC, since each QP in a process establishes a connection with another remote QP, the number of QPs that each process on a node needs to create is N*M. Here, N represents the number of compute nodes, and M represents the number of processes; both N and M are positive integers greater than 1. Therefore, the number of QPs required to be created in a compute node is N*M*M. As the scale of compute nodes in the compute cluster continues to expand, the total number of QPCs also increases with the number of QPs. Due to the limited on-chip cache capacity of RDMA network cards, a surge in the total number of QPCs can lead to numerous cache misses, requiring the retrieval of corresponding QPCs from main memory, which severely impacts communication performance. Therefore, compute clusters using the RC transport protocol face a serious connection scalability problem.
[0047] In some related technologies, because the sender and receiver of Unreliable Datagram (UD) transport protocols do not need to establish a communication channel, as long as they are physically reachable, the sender can send data to any receiver. That is, each process only needs one QP to communicate with all remote ends, effectively reducing the number of QPs, reducing network card memory usage, and to some extent solving the connectivity scalability problem of computing clusters. However, UD only supports two-sided communication semantics, and because UD is an unreliable transport protocol, it can lead to severe packet loss on the application side, requiring repeated transmissions, consuming CPU resources, and further impacting communication performance.
[0048] In other related technologies, the eXtended Reliable Connection (XRC) transport protocol is derived from RC. This protocol aggregates QPs (Queries Per Process) that connect to the same remote node within a process, reducing the number of connection channels and QPCs. However, XRC still suffers from connection scalability issues in large-scale computing clusters.
[0049] In some related technologies, dynamically-connected (DC) connections are used to reduce the number of connections while ensuring reliable data transmission accuracy. In the DC transmission protocol, each process has an independent Dynamically-connected Initiator (DCI) connection pool with a fixed number of K DCIs. Here, K is a positive integer greater than 1, and its value can be preset by relevant personnel. A DCI can be viewed as a QP (Queries Per Message) at the sending end. Unlike RC and XRC, the remote endpoints connected to each DCI are not fixed; connections can be established and terminated as needed. Correspondingly, each process has a Dynamically-connected Target (DCT) connection pool containing multiple Dynamically-connected Responders (DCRs). DCRs are used to establish transmission channels with the sending end's DCIs.
[0050] Figure 2 This diagram illustrates a communication principle diagram for an RDMA DC communication mode connection provided by related technologies. For example... Figure 2As shown, compute nodes 0, 1, and 2 each run processes 00 and 01, respectively. Compute nodes 0, 1, and 2 can be any compute node in the compute cluster. For compute node 0, process 00 includes a DCI connection pool, a DCT connection pool, a receive queue, and a completion queue. The DCI connection pool includes multiple DCIs (DCI1, DCI2, and DCI3) used to initiate communication connections. The DCT connection pool includes multiple DCRs (DCR1 and DCR2) used to establish connections with the DCIs that initiated the communication connections. The receive queue can be an extended datagram and connector share receive queue (XDC SRQ) used to receive data. The completion queue (CQ) records and stores relevant completion information for sending and receiving. Different processes on each compute node can establish links with the DCRs of the receiving end through DCIs, forming a communication channel. Processes transmit data through the communication channel and receive data through the receive queue.
[0051] In the above communication mode, the number of DCIs and DCRs within a process is fixed, meaning the number of DCIs and DCRs within a compute node is also fixed. Therefore, when the sending end sends data, it needs to first acquire a DCI from the sending end's DCI connection pool. If this DCI has already established a connection with another receiving end's process, the connection needs to be broken first, and then a connection needs to be established and communication completed with the DCR in the new remote process's DCT connection pool.
[0052] therefore, Figure 3 This diagram illustrates a flowchart of an RDMA DC connection establishment and packet sending process provided by related technologies. For example... Figure 3 As shown, when process 00 in compute node 0 receives a transmission task instructing it to send data to process 00 in compute node 1, process 00 in compute node 0 selects an unconnected DCI to initiate a connection request. For example... Figure 3As shown, process 00 in compute node 0 initiates a connection request to process 00 in compute node 1 through DCI 2 in the DCI connection pool. Process 00 in compute node 1 responds to the connection request through DCR 2 in the DCT connection pool where no connection has been established. Therefore, the connection is established. That is, DCI 2 in process 00 of compute node 0 establishes a connection with DCR 2 in process 00 of compute node 1. Process 00 of compute node 0 can send data packets to process 00 in compute node 1 through this communication channel. After receiving the response packet returned by DCR 2 of process 00 of compute node 1, DCI 2 of process 00 of compute node 0 disconnects the connection. That is, the communication channel between DCI 2 of process 00 of compute node 0 and DCR 2 of process 00 of compute node 1 is closed, releasing DCR 2 of process 00 of compute node 1.
[0053] Process 00 in compute node 0 can continue to establish a connection using DCI 2. DCI 2 of process 00 in compute node 0 initiates a connection request to process 01 in compute node 2. Compute node 2 responds to the connection request via DCR 1 in process 01, which is not yet linked, thus completing the connection. Process 00 in compute node 0 can then send data packets to process 01 in compute node 2 through this communication channel. After receiving the response packet returned by DCR 1 of process 01 in compute node 2, DCI 2 of process 00 in compute node 0 disconnects the connection. That is, it breaks the communication channel between DCI 2 in process 00 in compute node 0 and DCR 1 in process 01 in compute node 2, releasing DCR 1 of process 01 in compute node 2.
[0054] As described above, if the computing cluster 100 adopts RC communication mode, the memory usage of QP and QPC in each computing node 110 increases with the increase of computing nodes 110 in the computing cluster 100. If the computing cluster 100 adopts DC communication mode, the number of DCI and DCR in each computing node 110 is fixed and does not increase with the increase of computing nodes 110 in the computing cluster 100. Therefore, the memory usage of RDMA differs depending on the transmission protocol used. Figure 4 This diagram illustrates the memory footprint of different RDMA transport protocols as the size of the computing node increases. For example... Figure 4 As shown, the Extended Reliable Connection (XRC) transport protocol is derived from RC, aggregating QPs (Queries Per Process) connecting to the same remote node within a process, which can reduce the number of connection channels and QPCs to some extent. However, due to... Figure 4It is evident that, given varying numbers of compute nodes in a computing cluster, while XRC can reduce the number of QPs to some extent, it still consumes more memory as the node size increases, and connection scalability issues persist. In contrast, the number of DCIs and DCRs within a process is fixed in the DC transport protocol, and therefore does not consume more memory as the node size increases.
[0055] However, in scenarios requiring large-scale and frequent communication, when processes retrieve DCIs from the DCI pool, there are often situations where the pool is empty. Since the remote processes requesting the messages are likely different, this leads to frequent connection disconnections and reconnections, impacting latency. Therefore, as the computing cluster size increases, the increased number of connection establishment and disconnections causes latency issues, meaning that the data center still faces connection scalability challenges.
[0056] In view of this, embodiments of this application provide a method for updating a data channel, which is executed by the computing node where the process resides in the computing cluster. The computing node obtains the connection status of the DCIs in the DCI pool corresponding to the process, and updates the DCIs in the DCI pool according to the connection status. The connection status includes a connection establishment status. After the DCI corresponding to the process establishes a connection with the process's receiving end, it is in a connection establishment state. The process sends data to the receiving end corresponding to the DCI through the DCI in the connection establishment state.
[0057] In some embodiments, the DCI pool corresponding to a process in a compute node includes multiple DCIs. The compute node obtains the connection status of each DCI in the DCI pool and determines whether to create or delete a DCI in the DCI pool for the process based on the connection status of each DCI. By dynamically adjusting the number of DCIs in the DCI pool, the number of connection establishment and disconnection can be effectively reduced, thus effectively reducing the latency caused by connection establishment and disconnection. This solves the problem of increased latency due to the increased number of connection establishment and disconnection as the scale of the compute cluster increases, thereby limiting the expansion of the compute cluster, and further improves the connection scalability of the DC communication mode.
[0058] Secondly, the system architecture of the embodiments of this application will be described by way of example.
[0059] The above method can be applied to any computing node 100 in the computing cluster 100, therefore, Figure 5 A schematic diagram of the hardware structure of a computing node 110 provided in an embodiment of this application is shown. Figure 5 As shown, the computing node 110 may include a central processing unit (CPU) 510, a memory 520, an RDMA network card 530, and a bus 540. The CPU 510, memory 520, and RDMA network card 530 are typically interconnected via the bus 540, or interconnected in other ways.
[0060] The CPU 310 provides computing resources to the server 110 for running applications. The CPU 310 can also acquire the connection status of the Dynamic Connection Initiator (DCI) corresponding to a process, and update the DCI corresponding to the process based on its connection status. The connection status includes the connection establishment state; after establishing a connection with the receiving end, the DCI is in the connection establishment state, and the process sends data to the receiving end corresponding to the DCI through the DCI in the connection establishment state.
[0061] Memory 520 can be hardware capable of implementing storage functions, specifically volatile memory, non-volatile memory, hard disk, or flash drive. It is used to store instructions or programs that implement data channel update methods. Memory 520 is also used to store the DCI, DCR, and QPC corresponding to the process.
[0062] The RDMA network interface card 530 is used to connect to other computing nodes 110 in the computing cluster 100 and to transmit data with other computing nodes 110. For example, the on-chip cache of a typical RDMA network interface card 530 is fixed. That is, there is an upper limit to the number of DCIs that the RDMA network interface card 530 can accommodate.
[0063] It should be noted that the system architecture and application scenarios described in the embodiments of this application are for the purpose of more clearly illustrating the technical solutions of the embodiments of this application, and do not constitute a limitation on the technical solutions provided in the embodiments of this application. As those skilled in the art will know, with the evolution of system architecture and the emergence of new business scenarios, the technical solutions provided in the embodiments of this application are also applicable to similar technical problems.
[0064] For ease of understanding, the data channel update method provided in this application is described below with reference to the accompanying drawings. This data channel update method is applicable to... Figure 1 The computing cluster 100 shown is composed of Figure 5 The compute node 110 shown is executed.
[0065] Figure 6 A flowchart illustrating a data channel update method provided in an embodiment of this application is shown. Figure 6 As shown, the data channel update method includes the following steps:
[0066] S101, obtain the connection status of the dynamic connection initiator DCI corresponding to the process.
[0067] The connection status indicates whether a DCI has a corresponding receiver. Connection status includes established connection and disconnected connection. Established connection indicates that the DCI has a corresponding receiver; disconnected connection indicates that the DCI does not have a corresponding receiver. After establishing a connection with a receiver, the DCI is in the established connection state, and processes send data to the corresponding receiver through the DCI in the established connection state.
[0068] For example, the computing cluster 100 includes multiple nodes, and processes run on each node. Each process includes a corresponding DCI connection pool. The DCI connection pool includes multiple DCIs. Simultaneously, each process also includes a corresponding DCT connection pool, which includes multiple DCRs. When a process in a node needs to send data to a corresponding receiving process, the process initiates a connection establishment request through the DCI to the DCR in the receiving process's DCT connection pool, establishing a transmission channel. Therefore, a DCI in the connection establishment state represents a DCI that has established a transmission channel with the receiving process's DCR. At this time, the DCR corresponding to the receiving process is also in the connection establishment state. The process can send data to the receiving end corresponding to the DCI through the DCI in the connection establishment state.
[0069] At the same time, there is a one-to-one correspondence between the DCI of the process and the DCR of the receiving process. That is to say, a DCI or DCR in the connection establishment state cannot connect to other DCRs or DCIs.
[0070] In one possible implementation, the connection status of the DCI corresponding to the process is periodically retrieved.
[0071] In other words, during the process, the computing node obtains the connection status of the DCI corresponding to the process at regular intervals.
[0072] In one possible implementation, before obtaining the connection status of the dynamic connection initiator DCI corresponding to the process, the compute node creates the DCI corresponding to the process based on the running history of the process.
[0073] For example, before starting a process, the execution history of the process is used. This execution history includes the number of receivers that sent data to the process within a historical time period. Based on this historical execution history, the number of receivers that sent data to the process within that historical time period is obtained. Then, a corresponding number of Data Containers (DCIs) are created based on this number. This reduces the number of times the process establishes and breaks connections during data transmission, thus reducing latency.
[0074] For example, based on the running history of the process, the number of receiving ends for the data sent by the process during the historical time period is 28. Based on the number of receiving ends for the data sent by the process during the historical time period, 6 DCIs can be created, which can meet the transmission needs of the process and reduce the number of times the connection is broken and re-established.
[0075] Due to the transmission characteristics of DC communication mode, the DCI corresponding to a process will disconnect from the receiving end after transmission is completed. However, during process execution, the receiving end corresponding to the process generally includes a receiving end that sends data periodically, a receiving end that sends data intermittently, or a receiving end used to send control messages, etc.
[0076] In one possible implementation, the DCI corresponding to the process includes the target DCI; the target DCI and the target receiver are in a linked state and the link remains open even after data is sent.
[0077] For example, the target receiver for each process is determined. The target receiver may include a receiver that periodically sends data, a receiver that sends data intermittently, a receiver used to send control messages, or other types of receivers. To reduce the number of connection establishments, a target DCI is assigned to connect with the target receiver. The number of target DCIs corresponding to each process is determined based on the number of target receivers. Each target DCI establishes a connection with a target receiver, keeping the target DCI in a connection-established state. After data transmission is complete, the target DCI corresponding to the process remains in a connection-established state and does not disconnect, while waiting for the next transmission from the process. Assigning target DCIs reduces the number of connection breakages and reconnections, lowering latency; it also ensures process stability, thereby improving performance.
[0078] If all target DCIs are in the connection-establishing state, use other DCIs corresponding to the process to establish connections and send data. For example, Figure 7 A schematic diagram illustrating a target DCI connection communication process provided in an embodiment of this application is shown. Figure 7As shown, the application is launched in the computing cluster, and the target node starts running the process (S201). The target node can be any node in the computing cluster. The target receiver corresponding to the process is obtained (S202). The target receiver can be a target receiver that periodically sends data, a target receiver that sends data intermittently, a target receiver used to send control messages, or other types of receivers. For example, a receiver that periodically sends control messages or a process requiring special processing. For instance, in a high-performance linpack (HPL) benchmark test, the target receiver is the receiver that needs the process to send principal component selection messages in panel data decomposition. Based on the number of target receivers, the target DCI is determined (S203). The target DCI is used to establish a connection with the target receiver. Optionally, the target DCI and the target receiver are in a linked state, and the connection remains open even after data is sent.
[0079] If a process needs to send data to any target receiver (S204), it determines whether an established target DCI exists (S205). If it does, the target DCI is used to send data (S206). If it does not exist, it determines whether a disconnected target DCI exists (S207). If it does, the disconnected target DCI is used to establish a connection and send data (S208). Simultaneously, after the process receives an acknowledgment packet, the connection remains open (S209). If no disconnected target DCI exists, it determines whether a disconnected DCI exists in the process's corresponding DCI pool (S210). If it does, the disconnected DCI is used to establish a connection and send data (S211). After the data sent by this DCI returns an acknowledgment packet, the DCI connection is closed (S212). The DCI is released, restoring its connection state to the disconnected state. If no idle DCI exists in the DCI pool, it determines whether a target DCI with a completed task exists (S213). If a target DCI that has completed its task is disconnected (S214), the connection status of that target DCI becomes disconnected. The disconnected target DCI then establishes a connection with the remote end and sends data (S215). After the data sent by the target DCI returns an acknowledgment packet, the connection remains open (S216). If no target DCI that has completed its task exists, wait for the task to complete (S217), and then return to S214, disconnecting the target DCI that has completed its task (S214).
[0080] It should be noted that the number of data receivers a process needs to send data to often changes during process execution. Therefore, even when creating a DCI for a process based on its runtime history, frequent connection establishment and termination still occur, impacting process performance and limiting RDMA connection scalability. Therefore, during process execution, the number of DCIs in the process's DCI pool can be dynamically adjusted based on the connection status of the process's dynamic connection initiator DCI.
[0081] S102, Update the DCI corresponding to the process according to the connection status of the DCI corresponding to the process.
[0082] In this embodiment, if the number of DCIs in the established connection state among the obtained process-related DCIs is large, it indicates that the process needs to send data to a large number of receiving ends. In this case, new DCIs can be created to increase the number of DCIs. If the number of DCIs in the disconnected connection state among the obtained process-related DCIs is large, it indicates that the process needs to send data to a small number of receiving ends. In this case, DCIs in the disconnected connection state can be deleted.
[0083] In one possible implementation, a first quantity is obtained, and if the first quantity exceeds a first threshold, a first DCI is created.
[0084] The first quantity is the number of DCIs in the connection establishment state in the process's corresponding DCI; the connection state of the first DCI is the disconnected state; the disconnected state indicates that the DCI has no corresponding receiver.
[0085] For example, during process execution, the compute node obtains the connection status of the DCI corresponding to the process. Based on the connection status of each DCI, it determines the number of DCIs in the connection-establishing state for the process. If the number of DCIs in the connection-establishing state for the process exceeds a first threshold, it indicates that the number of receiving ends sending data for the process is large. Therefore, a first DCI is created in the process's DCI pool. This reduces the number of DCI connection disconnections and reconnections, thereby reducing latency and improving performance.
[0086] Optionally, after creating the first DCI, the number of DCIs corresponding to each process is modified in the shared memory pool of the compute node. The shared memory pool is a memory area that can be accessed and used by all processes in the compute node. In this embodiment, the shared memory pool is used to maintain the number of DCIs corresponding to each process in the compute node. After each update of the DCI corresponding to a process, the total number of DCIs corresponding to all processes in the shared memory pool is modified.
[0087] for example, Figure 8A schematic diagram illustrating an embodiment of this application for updating DCI is shown. Figure 8 As shown, for process 00, the process 00 includes a task queue 610, an execution queue 620, and a DCI connection pool during its execution.
[0088] The DCI connection pool includes DCI 1 and DCI 2. Task queue 610 stores tasks 3, 4...n to be executed, where n is a positive integer greater than 4. Tasks 3, 4...n represent transmission tasks that process 00 needs to send data to the receiving end. The receiving ends corresponding to tasks 3, 4...n are different. Execution queue 620 stores the tasks currently being executed by process 00.
[0089] Task 1 in execution queue 620 establishes a connection with the receiver corresponding to Task 1 through DCI 1 and sends data. Task 2 establishes a connection with the receiver corresponding to Task 2 through DCI 2 and sends data. At this time, all DCIs corresponding to process 00 are in the connection-establishing state. Task 3 can only be executed after Task 1 or Task 2 completes, disconnects its corresponding DCI, and re-establishes a connection with the receiver corresponding to Task 3. Therefore, with all DCIs corresponding to process 00 in the connection-establishing state, DCI 3 is created. Task 3 can then establish a connection with the receiver corresponding to Task 3 through DCI 3 and send data.
[0090] As can be seen from the above, during process execution, creating the first DCI based on the number of DCIs in the process's connection establishment state can effectively reduce the number of connection breakages and connection establishments for the process's corresponding DCI, reduce the latency of data transmission by the process, improve performance, and thus improve the scalability of RDMA.
[0091] It's important to note that while increasing the number of DCIs during process execution can effectively reduce the number of connection failures and establishments, thus lowering latency, the on-chip cache of common RDMA network cards is fixed. This means there's an upper limit to the number of DCIs an RDMA network card can hold. The upper limit threshold represents the maximum number of DCIs that the RDMA network card can cache. If the total number of DCIs corresponding to the process's node exceeds the upper limit threshold, the process will need to access main memory during connection establishment and data transmission via DCIs, thus increasing latency and degrading performance.
[0092] In one possible implementation, a second quantity is obtained; if the second quantity exceeds the upper limit threshold, the first delay of the process sending data is obtained; the second delay of the process sending data is obtained. If the second delay is greater than the first delay, the first DCI is deleted.
[0093] The second quantity is the number of DCIs corresponding to each process in the node where the process resides; the first latency is the latency for the process to send data before the creation of the first DCI; and the second latency is the latency for the process to send data after the creation of the first DCI.
[0094] Optionally, the first and second latency can be obtained through a plugin. This can be a software plugin or a hardware tool, etc., and is not limited here.
[0095] For example, before creating the first DCI, a first latency is obtained. If, after creating the first DCI, the total number of DCIs corresponding to the node where the process resides exceeds the upper limit threshold, a second latency is obtained. Based on the first latency and the second latency, it is determined whether to retain the first DCI. If the second latency is greater than the first latency, the first DCI is deleted. If the second latency is less than or equal to the first latency, the first DCI is retained.
[0096] For example, a typical RDMA network card can cache approximately 500 QPCs, so the upper limit threshold for the DCI corresponding to the compute node where the process resides is 500. If the compute node includes 64 processes, DCIs for each process are created based on their respective running history. However, as the processes run, the number of DCIs in the connection establishment state for multiple processes exceeds the first threshold, requiring the creation of the first DCI for each process.
[0097] For process 01 in the compute node, there are currently 6 DCIs corresponding to the process, all of which are in the linking state. Before creating the first DCI for process 01, if the total number of DCIs corresponding to the compute node where process 01 resides is 500, then the first latency is obtained. After creating the first DCI for process 01, the second latency is obtained. If the second latency is greater than the first latency, one first DCI is deleted, so that the total number of DCIs corresponding to the compute node where the process resides is 500. If process 01 needs to create another first DCI, the latency before and after creation is compared, and based on the magnitude of the latency, it is determined whether to retain it.
[0098] In another possible implementation, obtain a fourth quantity; if the fourth quantity exceeds the first upper limit threshold, obtain the first delay of the process sending data; obtain the second delay of the process sending data. If the second delay is greater than the first delay, delete the first DCI.
[0099] The fourth quantity is the number of DCIs corresponding to the process; the first latency is the latency for the process to send data before the creation of the first DCI; the second latency is the latency for the process to send data after the creation of the first DCI. The first upper limit threshold represents the upper limit of the total number of DCIs corresponding to the process.
[0100] For example, a typical RDMA network card can cache approximately 500 QPCs. For a compute node with 64 processes, the first upper limit threshold for each process's DCI is 8. After creating the first DCI, the number of DCIs corresponding to each process is 10. Therefore, the first latency and the second latency are obtained. By comparing the latency of data transmission by the process before and after the creation of the first DCI, it is determined whether to retain the created first DCI. If the second latency is greater than the first latency, the created first DCI is deleted. If the second latency is less than or equal to the first latency, the created first DCI is retained.
[0101] In one possible implementation, a third quantity is obtained, and if the third quantity exceeds a second threshold, the second DCI is deleted.
[0102] The third quantity is the number of DCIs in the process that are in a disconnected state; a disconnected state means that the DCI has no corresponding receiver; the connection state of the second DCI is a disconnected state.
[0103] For example, during process execution, the third number of DCIs in a disconnected state corresponding to the process is obtained. If the third number exceeds the second threshold, it indicates that the third number of DCIs corresponding to the process are in a disconnected state. This suggests that there are few transmission tasks in the process, or that the receiving end of the transmission tasks is the same. In this case, the second DCI is deleted.
[0104] Optionally, after deleting the second DCI, the information regarding the total number of DCIs for all processes can be modified in the shared memory pool of the compute node.
[0105] As can be seen from the above, if the number of DCIs in the DCI corresponding to a process is in a broken state during process execution exceeds the second threshold, deleting the second DCI can release the number of DCIs corresponding to the node where the process is located, create space for the first DCI to be released for other processes on the node, reduce the latency of data transmission by the node, and improve transmission performance.
[0106] In another possible implementation, if the third quantity exceeds the second threshold, the DCIs in the chain-building state in the corresponding DCI of the process are kept unbroken.
[0107] In other words, if the number of DCIs in the disconnected state in the process exceeds the second threshold, it indicates that there are few transmission tasks in the process, or that the receiving end of the transmission tasks is the same. In this case, the DCIs in the process that are in the connection establishment state will not disconnect after sending data, and will maintain the connection establishment state, which can effectively reduce the number of disconnections and connection establishments.
[0108] In one possible implementation, the DCI corresponding to a process is periodically updated based on the connection status of the DCI.
[0109] In other words, during process execution, the node obtains the connection status of the DCI corresponding to the process at regular intervals. Based on the current DCI connection status, it creates the first DCI or deletes the second DCI. This enables dynamic updating of the DCI corresponding to the process during process execution, effectively reducing the number of times the process-related DCI disconnects and reconnects, balancing the number of DCIs corresponding to each process in the node, reducing the latency of data transmission between processes in the process node, and making the computing cluster using DC communication not limited by the buffer capacity on the RDMA network card when expanding its scale, thereby improving the scalability of RDMA connectivity.
[0110] For example, Figure 9 This document illustrates a flowchart of a dynamic reliable connection operation provided in an embodiment of this application. Figure 9 As shown, the application is started in the computing cluster (S301), causing each node in the cluster to start running the process corresponding to the application. For any node in the computing cluster, an initial value for the total number of DCIs corresponding to the node is set (S302). Specifically, the initial value for the total number of DCIs corresponding to the node is set according to the number of processes or the upper limit of the number of DCIs per process. The upper limit of the number of DCIs corresponding to the node is related to the on-chip cache capacity of the RDMA network card. For example, the RDMA network card can cache a maximum of K QPCs. When the total number of DCIs corresponding to the node exceeds K, it may cause cache misses. Therefore, the upper limit of the total number of DCIs corresponding to the node is K. For example, a common RDMA network card can cache about 500 QPCs. Assuming 64 processes per node, 8 DCIs per process can cache all of its QPCs on the RDMA network card. Therefore, the upper limit of the number of DCIs in the DCI pool corresponding to each process is generally 8. Optionally, the number of DCIs corresponding to each process in the computing node can be maintained in the shared memory pool of the computing node. For example, based on the upper limit of the number of DCIs corresponding to the compute node, an initial value for the total number of DCIs corresponding to the compute node is set. The initial value is usually less than the upper limit, without considering the upper limit of the number of DCIs corresponding to each process in the compute node.
[0111] For any process within a node, during the node's execution, the connection status of the corresponding DCI is obtained (S303). The connection status includes established connection and disconnected connection. Established connection indicates that the DCI has a unique receiver; disconnected connection indicates that the DCI has no corresponding receiver. Based on the connection status of the process's corresponding DCI, the process's DCI is updated (S304). In one possible implementation, if only a small number of DCIs are needed in the process, that is, if the number of DCIs in the disconnected connection state in the process's DCI pool exceeds a second threshold, a second DCI is deleted (S305). The connection status of the second DCI is disconnected. Specifically, the number of second DCIs to be deleted can be determined based on the second threshold, ensuring that the number of DCIs in the disconnected connection state for the process does not exceed the second threshold. For example, if the second threshold is 4, and the number of DCIs in the disconnected connection state for the process is 6, 2 second DCIs can be deleted. After deleting the second DCIs, the process runs normally (S311). Optionally, after deleting the second DCIs, the information on the total number of DCIs corresponding to the node is modified in the shared memory pool of the computing node.
[0112] In another possible implementation, the number of DCIs in the established state in the DCI pool corresponding to the process exceeds a first threshold; or, all DCIs corresponding to the process are in the established state and require additional DCIs for communication, thus creating a first DCI (S306). After creating the first DCI, the total number of DCIs corresponding to the compute node is modified in the shared memory pool of the compute node. The connection state of the first DCI is a disconnected state. The number of the first DCI can be a fixed threshold. After creating the first DCI, the total number of DCIs corresponding to the node where the process resides is obtained, and it is determined whether the total number of DCIs corresponding to the node exceeds the upper limit (S307). The total number of DCIs corresponding to the node where the process resides is the sum of the number of DCIs corresponding to each process in the node. Specifically, the total number of DCIs corresponding to the node where the process resides can be obtained by accessing the shared memory pool. If it does not exceed the upper limit, the process runs normally (S311). If it exceeds the upper limit, the first delay and the second delay are obtained (S308). The first delay is the delay for the process to send data before the creation of the first DCI; the second delay is the delay for the process to send data after the creation of the first DCI. For example, the latency of data transmission by the process can be detected by a plugin, and the specific method is not limited. Determine whether the first latency is greater than the second latency (S309). If the first latency is not greater than the second latency, the process runs normally (S311). If the first latency is not greater than the second latency, it means that the performance before creating the first DCI is better than after creating the first DCI. That is, when the number of DCIs corresponding to a node exceeds the upper limit, the performance consumption caused by the additional access to main memory exceeds the performance consumption caused by the process waiting for transmission tasks. At this time, delete the first DCI (S310). Optionally, for a process in a compute node, when the total number of DCIs corresponding to the compute node where the process is located exceeds the upper limit threshold, after creating the first DCI, if the first latency is not greater than the second latency, a portion of the first DCIs corresponding to the process can be deleted.
[0113] For example, before creating the first DCI corresponding to a process, the total number of DCIs corresponding to the compute node where the process resides is obtained. If the total number exceeds the upper limit threshold, the first latency is obtained. After creating two first DCIs corresponding to a process, the second latency is obtained. If the second latency is greater than the first latency, the node can first delete one first DCI and compare the latency of the process sending data before and after the deletion to determine whether to continue deleting another first DCI.
[0114] In one possible implementation, the node acquires the first transmission task corresponding to the process; establishes a connection with the receiving end corresponding to the process through the updated DCI, ensuring the updated DCI is in a connection-established state. The node sends data to the receiving end corresponding to the process through the updated DCI; the node receives the acknowledgment packet returned by the receiving end corresponding to the process.
[0115] In other words, after updating the DCI corresponding to the process, the node establishes a connection with the receiving end corresponding to the process and sends data through the updated DCI. If the receiving end receives the data, the node can receive the acknowledgment packet from the receiving end corresponding to the process, indicating that the data was successfully sent and received by the receiving end.
[0116] In one possible implementation, the connection between the updated DCI and the receiver corresponding to the process is disconnected, thus putting the DCI in a disconnected state.
[0117] In other words, once the node is able to receive the acknowledgment packet from the receiver corresponding to the process, it releases the DCI. The node then disconnects the updated DCI from the receiver corresponding to the process, causing the DCI to return to a disconnected state.
[0118] For example, the first transmission task obtained by the target node includes an instruction to send a data packet to process 03 in computing node M. Here, the target node can be any node in the computing cluster. The target node runs a process, and the updated DCI corresponding to that process includes the first DCI. The connection status of the first DCI is disconnected.
[0119] The process in the target node initiates a connection request and establishes a connection through the first DCI to the DCR (Disconnected Container Registry) of the DCT connection pool corresponding to process 03 in compute node M, which is in an interrupted connection state. The first DCI is in the connection-establishing state, and its receiving end is the DCR corresponding to process 03 in compute node M. The target node sends data packets through the first DCI in the connection-establishing state. After process 03 in compute node M successfully receives the data packets, it returns an acknowledgment packet to the first DCI corresponding to the target node through the DCR. The target node releases the first DCI corresponding to the process, disconnects the first DCI from the DCR corresponding to process 03 in compute node M, and restores the connection state of the first DCI to the disconnected state.
[0120] In summary, this application provides a data channel update method applied to an RDMA communication computing cluster. For any computing node, the method includes obtaining the connection status of the DCI corresponding to a process, and updating the DCI corresponding to the process based on its connection status. The connection status includes a connection establishment state and a connection termination state. After establishing a connection with the receiving end, the DCI is in a connection establishment state, and the process sends data to the receiving end corresponding to the DCI through the DCI in the connection establishment state. A connection termination state indicates that the DCI has no corresponding receiving end. Specifically, if the number of DCIs in the connection establishment state among the DCIs corresponding to a process exceeds a first threshold, a first DCI is created. If the number of DCIs in the connection termination state among the DCIs corresponding to a process exceeds a second threshold, a second DCI is deleted. The connection status of both the first and second DCIs is a connection termination state. This method avoids frequent connection establishment and termination due to cluster expansion in DC communication mode, effectively reducing latency caused by connection termination and establishment, thereby improving transmission performance. This solves the problem of increased latency caused by the increased number of connection establishment and disconnection times as the computing cluster size increases, which limits the expansion of the computing cluster size, and further improves the connection scalability of RDMA reliable connection transmission.
[0121] The foregoing mainly describes the solutions of the embodiments of this application from a methodological perspective. It is understood that, in order to implement the functions in the above-described data channel update method, the data channel update apparatus includes at least one of the hardware structures and software modules corresponding to each function. Those skilled in the art should readily recognize that, in conjunction with the units and algorithm steps of the various examples described in the embodiments disclosed herein, the embodiments of this application can be implemented in hardware or a combination of hardware and computer software. Whether a function is executed in hardware or by computer software driving hardware depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of the embodiments of this application.
[0122] This application embodiment can divide the data channel update device into functional units according to the above method example. For example, each function can be divided into a separate functional unit, or two or more functions can be integrated into one processing unit. The integrated unit can be implemented in hardware or as a software functional unit. It should be noted that the unit division in this application embodiment is illustrative and only represents one logical functional division. In actual implementation, there may be other division methods.
[0123] For example, Figure 10 A schematic diagram of the structure of a data channel update device 400 provided in an embodiment of this application is shown. Figure 10 As shown, the data channel update device 400 can be applied in the computing node 110, and the data channel update device 400 includes:
[0124] The acquisition module 401 is used to acquire the connection status of the dynamic connection initiator DCI corresponding to the process. The connection status includes the connection establishment status. After the DCI establishes a connection with the receiving end, it is in the connection establishment status. The process sends data to the receiving end corresponding to the DCI through the DCI in the connection establishment status.
[0125] The processing module 402 is used to update the DCI corresponding to the process based on the connection status of the DCI corresponding to the process.
[0126] For example, combining Figure 6 The acquisition module 401 is used to perform, for example... Figure 6 As shown in S101, the processing module 402 is used to perform, for example... Figure 6 S102 as described above.
[0127] In one possible implementation, the acquisition module 401 is also used to acquire a first quantity; the first quantity is the number of DCIs in the link-building state in the DCI corresponding to the process.
[0128] In one possible implementation, the acquisition module 401 is also used to acquire a second quantity; the second quantity is the number of DCIs corresponding to each process in the node where the process is located; if the second quantity exceeds the upper limit threshold, the first delay of the process sending data is acquired; the first delay is the delay of the process sending data before the creation of the first DCI; the second delay is acquired, which is the delay of the process sending data after the creation of the first DCI.
[0129] In one possible implementation, the acquisition module 401 is also used to acquire a third quantity; the third quantity is the number of DCIs in the process's corresponding DCI that are in a disconnected state; the disconnected state indicates that the DCI has no corresponding receiver.
[0130] In one possible implementation, the acquisition module 401 is also used to acquire the first transmission task corresponding to the process.
[0131] In one possible implementation, the processing module 402 is further configured to create a first DCI if the first quantity exceeds a first threshold; wherein the connection state of the first DCI is a disconnected state; the disconnected state indicates that the DCI has no corresponding connected receiver.
[0132] In one possible implementation, the processing module 402 is further configured to delete the first DCI if the second delay is greater than the first delay.
[0133] In one possible implementation, the processing module 402 is further configured to delete the second DCI if the third quantity exceeds the second threshold; the connection state of the second DCI is a disconnected state.
[0134] In one possible implementation, the processing module 402 is further configured to establish a connection with the receiving end corresponding to the process through the updated DCI, so that the updated DCI is in the connection-established state; send data to the receiving end corresponding to the process through the updated DCI; and receive the response packet returned by the receiving end corresponding to the process.
[0135] In one possible implementation, the processing module 402 is also used to disconnect the updated DCI from the receiver corresponding to the process, so that the DCI is in a disconnected state.
[0136] In one possible implementation, the processing module 402 is also used to create a process-specific DCI based on the process's running history.
[0137] As an example, combined Figure 5 The data channel update device 400 can perform some or all of the functions of the acquisition module 401 and processing module 402 through... Figure 5 It is executed by CPU 510.
[0138] Both the acquisition module 401 and the processing module 402 can be implemented in software or in hardware. For example, the implementation of the acquisition module 401 will be described below. Similarly, the implementation of the processing module 402 can be referenced from the implementation of the acquisition module 401.
[0139] As an example of a software functional unit, the acquisition module 401 may include code running on a computing instance. The computing instance may include at least one of a physical host (computing device), a virtual machine, or a container. Furthermore, the aforementioned computing instance may be one or more. For example, the acquisition module 401 may include code running on multiple hosts / virtual machines / containers.
[0140] It should be noted that the multiple hosts / virtual machines / containers used to run this code can be distributed within the same region or in different regions. Furthermore, the multiple hosts / virtual machines / containers used to run this code can be distributed within the same availability zone (AZ) or in different AZs, each AZ comprising one or more geographically proximate data centers. Typically, a region can include multiple AZs.
[0141] Similarly, multiple hosts / virtual machines / containers used to run this code can be distributed within the same Virtual Private Cloud (VPC) or across multiple VPCs. Typically, a VPC is set up within a region. Communication between two VPCs within the same region, as well as between VPCs in different regions, requires a communication gateway to be set up within each VPC to enable interconnection between VPCs.
[0142] As an example of a hardware functional unit, the acquisition module 401 may include at least one computing device, such as a server. Alternatively, the acquisition module 401 may also be a device implemented using an application-specific integrated circuit (ASIC) or a programmable logic device (PLD). The PLD may be implemented using a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), generic array logic (GAL), or any combination thereof.
[0143] The multiple computing devices included in the acquisition module 401 can be distributed in the same region or in different regions. Similarly, the multiple computing devices included in the acquisition module 401 can be distributed in the same Availability Zone (AZ) or in different AZs. Likewise, the multiple computing devices included in the acquisition module 401 can be distributed in the same Virtual Private Cloud (VPC) or in multiple VPCs. These multiple computing devices can be any combination of computing devices such as servers, ASICs, PLDs, CPLDs, FPGAs, and GALs.
[0144] It should be noted that, in other embodiments, the acquisition module 401 can be used to execute any step in the data channel update method, and the processing module 402 can be used to execute any step in the data channel update method. The steps implemented by the acquisition module 401 and the processing module 402 can be specified as needed. The acquisition module 401 and the processing module 402 respectively implement different steps in the data channel update method to realize all the functions of the data channel update device 400.
[0145] This application also provides a computer-readable storage medium storing instructions that, when executed on a computer, cause the computer to perform operations corresponding to any one of the implementation schemes and various feasible implementation schemes of the data channel update method.
[0146] This application also provides a computer program product containing instructions that, when run on a computer, cause the computer to perform operations of any implementation scheme and various feasible implementation schemes corresponding to the data channel update method.
[0147] Those skilled in the art will recognize that the units and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.
[0148] Those skilled in the art will understand that, for the sake of convenience and brevity, the specific working processes of the systems, devices, and units described above can be referred to the corresponding processes in the foregoing method embodiments, and will not be repeated here.
[0149] In the above embodiments, implementation can be achieved entirely or partially through software, hardware, firmware, or any combination thereof. When implemented using software, it can be implemented entirely or partially in the form of a computer program product. The computer program product includes one or more computer instructions, which, when loaded and executed on a computer, generate all or part of the processes or functions described in the embodiments of this application. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, the computer instructions can be transmitted from one network site, computer, server, or data center to another network site, computer, server, or data center via wired (e.g., coaxial cable, fiber optic, digital subscriber line) or wireless (e.g., infrared, microwave, etc.) means. The computer-readable storage medium can be any available medium that a computer can access, or it can be a data storage device such as a server or data center that integrates one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape, etc.), an optical medium (e.g., DVD, etc.), or a semiconductor medium (e.g., solid-state drive), etc.
[0150] In the above embodiments, the descriptions of each embodiment have different focuses. For parts not described in detail in a certain embodiment, please refer to the relevant descriptions in other embodiments.
[0151] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.
Claims
1. A data channel update method, characterized in that, The method includes: The connection status of the dynamic connection initiator DCI corresponding to the process is obtained, and the connection status includes the connection establishment status; wherein, after the DCI establishes a connection with the receiving end, it is in the connection establishment status, and the process sends data to the receiving end corresponding to the DCI through the DCI in the connection establishment status. Update the DCI corresponding to the process based on the connection status of the DCI corresponding to the process.
2. The method according to claim 1, characterized in that, The step of updating the DCI corresponding to the process based on the connection state of the DCI corresponding to the process includes: Obtain a first quantity; the first quantity is the number of DCIs in the chain-building state corresponding to the process. If the first quantity exceeds the first threshold, a first DCI is created; The connection state of the first DCI is a disconnected state; the disconnected state indicates that the DCI has no corresponding receiver.
3. The method according to claim 2, characterized in that, The method further includes: Obtain a second quantity; the second quantity is the number of DCIs corresponding to each process in the node where the process resides; If the second quantity exceeds the upper limit threshold, the first delay of the process sending data is obtained; the first delay is the delay of the process sending data before the creation of the first DCI; The second delay for the process to send data is obtained, where the second delay is the delay for the process to send data after the creation of the first DCI; If the second delay is greater than the first delay, delete the first DCI.
4. The method according to any one of claims 1-3, characterized in that, The step of updating the DCI corresponding to the process based on the connection state of the DCI corresponding to the process includes: Obtain a third quantity; the third quantity is the number of DCIs in the process that are in a disconnected state; the disconnected state indicates that the DCI has no corresponding connected receiver. If the third quantity exceeds the second threshold, the second DCI is deleted; the connection status of the second DCI is the disconnected state.
5. The method according to any one of claims 1-4, characterized in that, The DCI corresponding to the process includes a target DCI; the target DCI and the target receiver are in the connection establishment state, and the connection is not broken after data is sent.
6. The method according to any one of claims 1-5, characterized in that, The method further includes: Obtain the first transmission task corresponding to the process; By establishing a connection between the updated DCI and the receiving end corresponding to the process, the updated DCI is placed in the connection-established state. Data is sent to the receiving end corresponding to the process through the updated DCI; Receive the response packet returned by the receiving end corresponding to the process.
7. The method according to claim 6, characterized in that, The method further includes: Disconnect the updated DCI from the receiver corresponding to the process, so that the DCI is in the disconnected state.
8. The method according to any one of claims 1-7, characterized in that, Before obtaining the connection status of the dynamic connection initiator DCI corresponding to the process, the method further includes: Based on the running history of the process, create the DCI corresponding to the process.
9. A data channel update device, characterized in that, The device includes: The acquisition module is used to acquire the connection status of the dynamic connection initiator (DCI) corresponding to the process. The connection status includes the connection establishment status. The DCI is in the connection establishment status after establishing a connection with the receiving end. The process sends data to the receiving end corresponding to the DCI through the DCI in the connection establishment status. The processing module is used to update the DCI corresponding to the process based on the connection status of the DCI corresponding to the process.
10. A computing node, characterized in that, The computing node includes: a processor and a memory for storing processor-executable instructions; the processor is configured to execute the instructions, causing the server to perform the data channel update method as described in any one of claims 1-8.
11. A computer program product, characterized in that, The computer program product includes instructions that, when executed by a server, cause the server to perform the data channel update method as described in any one of claims 1-8.
12. A computer-readable storage medium, characterized in that, The computer-readable storage medium includes computer program instructions that, when executed by a server, enable the server to perform the data channel update method as described in any one of claims 1-8.