Data transmission method and related device

By decoupling the network interface card (NIC) pool and memory pool of the computing system, and utilizing switching nodes for data transmission, the problem of limited data transmission performance between computing nodes is solved, and more efficient data transmission is achieved.

CN121750596APending Publication Date: 2026-03-27HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-09-26
Publication Date
2026-03-27

Smart Images

  • Figure CN121750596A_ABST
    Figure CN121750596A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides a data transmission method and a related device, a network card pool, a memory pool and a computing node of a computing system are decoupled, the memory pool, the network card pool, the computing node and a switching node realize intercommunication through a bus interconnection protocol, and the memory pool and the network card pool are shared by the computing node of the computing system. And the computing node, the network card equipment or the switching node can read the data in the memory pool or write the data into the memory pool through a bus interconnection protocol. When a computing node of a computing system and other computing nodes carry out data transmission, network card equipment in a network card pool can be allocated to the computing node according to service requirements of the computing node, for example, the computing node comprises a plurality of services, and each service is provided with corresponding network card equipment, so that the performance of the network card equipment in the network card pool is fully utilized, and the data transmission efficiency is improved. And the data transmission performance is improved.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present application relates to the technical field of Internet, and particularly relates to a data transmission method and related device. BACKGROUND

[0002] In an enterprise or a public cloud, each computing system usually includes a computing node (for example, a server), and when different computing nodes communicate, one of the computing nodes stores a message in the memory of the computing node, and then the computing node sends the message to another computing node through a network card device. The computing system usually includes multiple network card devices, and the above data transmission process cannot fully utilize the performance of the multiple network card devices, resulting in limited transmission performance of the message. SUMMARY

[0003] The present application provides a data transmission method and related device, which fully utilizes the transmission capacity of multiple network card devices in a computing system to improve the transmission performance of a message.

[0004] To achieve the above object, the present application adopts the following technical scheme:

[0005] In a first aspect, a data transmission method is provided, which is applied to a first computing system. The first computing system includes multiple computing nodes, a computing interconnection protocol exchange node, a memory pool and a network card pool. The memory pool includes multiple memory devices, and the network card pool includes multiple network card devices. The multiple computing nodes, the memory devices and the network card devices are respectively connected with the exchange node. The network card pool and the memory pool are shared by the multiple computing nodes. The method includes: a first computing node in the multiple computing nodes sends a first request to the exchange node. The first request includes a first message and first message information. The exchange node receives the first request and writes the first request into the memory pool. The exchange node sends the first message information to a first network card device. The first network card device acquires the first message according to the first message information and sends the first message to a second computing node. The second computing node belongs to a second computing system.

[0006] Thus, the memory pool and the network card pool of the present application are decoupled from the computing nodes of the computing system, and the memory pool, the network card pool, the computing nodes and the switching nodes are interconnected through an interconnection bus protocol, and the computing nodes and the network card devices can write data into the memory pool or read data from the memory pool through the interconnection bus protocol. Since the memory pool and the memory pool are shared by multiple computing nodes through the switching nodes. In the process of transmitting the message, the computing nodes write the first message and the first message information into the memory pool through the switching nodes. The switching nodes can allocate one or more network card devices to each computing node according to the needs of the computing nodes, so as to fully utilize the performance of the network card devices in the network card pool and improve the transmission performance of the message. The switching nodes transmit the first message information to the allocated network card devices, and the network card devices obtain the first message in the memory pool through the first message information and transmit the first message to the destination node of another computing system. In the process of transmitting the message, the computing nodes only need to transmit the first message and the first message information to the switching nodes, and the computing nodes do not need to move data, such as from the memory pool to the network card pool, in the process of transmitting the first message, thereby reducing the utilization rate of the computing nodes and improving the performance of the computing nodes. In addition, if it is determined according to the first message information that the destination address of the first message is a computing node of another computing system, the message needs to be transmitted to the other node through the network card device, and the switching node transmits the first message information to the network card device after obtaining and analyzing the first message information.

[0007] In some implementations of the first aspect, the writing the first request into the memory pool comprises: writing the first packet into a first cache space of the memory pool, and writing the first packet information into a sending queue of the memory pool; the sending, by the switching node, of the first packet information to the first network card device comprises: reading, by the switching node, the first packet information from the sending queue and sending the first packet information to the first network card device of the network card pool; and the obtaining, by the first network card device, of the first packet according to the first packet information comprises: obtaining, by the first network card device, the first packet from the first cache space according to the first packet information. In the data transmission process, the first computing node acts as a sending node, writes the first packet and the first packet information into the memory pool through the switching node, the switching node reads the first packet information from the memory pool, parses the first packet information, and then sends the first packet information to the first network card device, so that the first network card device obtains the storage address of the first packet and the destination node information according to the first packet information, obtains the first packet from the memory pool according to the storage address, and sends the first packet to the destination node (i.e., the second computing node of the second computing system) according to the destination node information, so as to realize the transmission of data. By sending the first packet information to the sending queue, the switching node can read the packet information in the sending queue in order, and sort the multiple packet information sent by the computing node through the sending queue. It can be understood that multiple sending queues can be allocated to the computing node according to the business requirements of the computing node, for example, one sending queue corresponds to one business, and one network card device of the network card pool is allocated to each sending queue. Then, after the first packet is written into the corresponding sending queue, the switching node sends the corresponding first packet information to the network card device corresponding to the sending queue, so as to allocate one or more network card devices to the computing node according to the business requirements of the computing node, so that the performance of the network card device can be fully utilized in the data transmission process of the computing node, thereby improving the performance of packet transmission, especially for computing nodes with large data transmission volume. In some implementations of the first aspect, the method further comprises: sending, by the first computing node, a second request to the switching node, the second request comprising a second packet and second packet information; receiving, by the switching node, the second request, writing the second packet into a second cache space of the memory pool, and writing the second packet information into the sending queue;

[0008] The exchange node reads the second message information from the sending queue; if the second message information indicates that the destination node of the second message is a third computing node of the first computing system, the exchange node writes the second message information to a receiving queue of the memory pool; the third computing node reads the second message information from the receiving queue, and reads the second message from the second cache space according to the second message information. In this way, the plurality of computing nodes of the first computing system transmit messages to each other without passing through the network card devices of the network card pool, and the message transmission between the plurality of computing nodes can be realized without passing through the network card devices of the network card pool. By analyzing the message information corresponding to the message by the exchange node, compared with transmitting the message between the plurality of nodes, the amount of information transmitted is reduced, and the efficiency of data transmission is improved.

[0009] In some implementations of the first aspect, the method further includes: the first network card device receiving a third message, and sending the third message to the exchange node, the destination node of the third message being the first computing node; the exchange node receiving the third message, writing the third message to a third cache space of the memory pool, and generating third message information corresponding to the third message; the exchange node writing the third message information to a receiving queue of the first computing node; and the first computing node reading the third message information from the receiving queue, and reading the third message from the third cache space according to the third message information. The computing node in the computing system is the destination address of the message and the source address of the message is the computing node of the other computing system. The network card device receiving the message stores the received message in the memory pool. Then, when the network card device transmits the message to the computing node of the same computing system, the plurality of receiving queues of the computing node as the destination node can correspond to the plurality of network card devices in the network card pool. Each receiving queue corresponds to a network card device, and the plurality of network card devices of the network card pool can be allocated to the computing node according to the transmission performance of the computing node receiving the message. For example, the computing node includes a plurality of services, each service corresponds to a receiving queue, and each receiving queue corresponds to a network card device. Therefore, the number of network card devices serving the computing node can be adjusted according to the actual demand of the computing node, so that the performance of the network card device can be fully used to improve the transmission efficiency of data.

[0010] In some implementations of the first aspect, the method further includes: the first computing node sending request information to the switching node, the request information being used to apply for memory or release memory; the switching node writing the request information into an instruction queue of the memory pool; the switching node reading the request information in the instruction queue, generating response information according to the request information, and writing the response information into a response queue of the memory pool; and the first computing node reading the response information in the response queue through the switching node. In this way, in the process of applying for or releasing memory in the memory pool, the computing node writes the memory application into the instruction queue in the memory pool through the switching node, the switching node reads the request information in the instruction queue according to a preset rule, allocates memory of the memory pool or releases the memory for the computing node according to the request information, and writes the result information into the response queue of the memory pool, and the computing node reads the response information in the response queue through the switching node to realize the application or release of the memory.

[0011] In a second aspect, a data transmission method is provided, applied to a switching node of a first computing system, the first computing system further including computing nodes, a memory pool and a network card pool, the memory pool including a plurality of memory devices, the network card pool including a plurality of network card devices, the plurality of computing nodes, the memory devices and the network card devices being connected with the switching node respectively, the network card pool and the memory pool being shared by the plurality of computing nodes;

[0012] The method includes:

[0013] The switching node receives a first request sent by a first computing node of the plurality of computing nodes, and writes the first request into the memory pool, the first request including a first packet and first packet information, the first packet having a destination node of a second computing node, the second computing node belonging to a second computing system;

[0014] The switching node sends the first packet information to the first network card device.

[0015] In some implementations of the second aspect, the writing of the first request into the memory pool includes:

[0016] writing the first packet into a first cache space of the memory pool, and writing the first packet information into a sending queue of the memory pool;

[0017] The sending of the first packet information to the first network card device of the network card pool by the switching node includes:

[0018] The switching node reads the first packet information from the sending queue and sends the first packet information to the first network card device of the network card pool.

[0019] In some implementations of the second aspect, the method further includes: receiving, by the switch node, the second request, writing, by the switch node, the second packet in the second request to a second cache space of the memory pool, and writing, by the switch node, second packet information in the second request to the sending queue;

[0020] reading, by the switch node, the second packet information from the sending queue, the destination node of the second packet being a third computing node of the first computing system, the third computing node being connected to the switch node through a first port;

[0021] writing, by the switch node, the second packet information to a receiving queue of the memory pool if the second packet information indicates that the destination node of the second packet is the third computing node of the first computing system;

[0022] reading, by the third computing node, the second packet information from the receiving queue, and reading, by the third computing node, the second packet from the second cache space according to the second packet information.

[0023] In a third aspect, an electronic device is provided, including: a memory including computer readable instructions; and a processor in communication with the memory, the processor configured to execute the computer readable instructions to cause the electronic device to perform the data transmission method of any one of the second aspect.

[0024] In a fourth aspect, a computer readable storage medium is provided, including a program or instructions that, when executed by a processor, implement the data transmission method of any one of the second aspect.

[0025] In a fifth aspect, a chip is provided, including a processor configured to call and run instructions stored in a memory, so that an electronic device installed with the chip performs the data transmission method of any one of the second aspect.

[0026] In a sixth aspect, a computer program product is provided, including instructions that, when executed by a computer, implement the method of any one of the second aspect.

[0027] The beneficial effects brought by each possible implementation manner of the method provided in the second aspect, the electronic device provided in the third aspect, the computer readable storage medium provided in the fourth aspect, the chip provided in the fifth aspect, and the computer program product provided in the sixth aspect can be referred to the description in the various possible implementation manners in the first aspect, which will not be repeated here. BRIEF DESCRIPTION OF DRAWINGS

[0028] Figure 1 A schematic diagram of a computing system provided in the embodiments of the present application;

[0029] Figure 2 A flowchart of a data transmission method provided by an embodiment of the present application is shown in FIG. 1.

[0030] Figure 3 A flowchart of a data transmission method provided by an embodiment of the present application is shown in FIG. 1.

[0031] Figure 4 A flowchart of a data transmission method provided by an embodiment of the present application is shown in FIG. 1.

[0032] Figure 5 A flowchart of a data transmission method provided by an embodiment of the present application is shown in FIG. 1.

[0033] Figure 6 A flowchart of a data transmission method provided by an embodiment of the present application is shown in FIG. 1.

[0034] Figure 7 A flowchart of a data transmission method provided by an embodiment of the present application is shown in FIG. 1.

[0035] Figure 8 A flowchart of a data transmission method provided by an embodiment of the present application is shown in FIG. 1. DETAILED DESCRIPTION

[0036] The technical solutions in the present application will be described below with reference to the drawings. Obviously, the described embodiments are only some of the embodiments of the present specification, not all.

[0037] Generally, each computing system includes multiple computing nodes and multiple network card devices, and the computing nodes of the computing system communicate with other computing nodes through a network. During message transmission, each computing node usually communicates through one network card device. If the number of computing nodes is large, the communication performance of the network card device will affect the message transmission performance.

[0038] Based on the above problems, the present application provides a data transmission method. The network card pool, memory pool and computing nodes of the computing system are decoupled and set, and the memory pool and network card pool are shared by the computing nodes of the computing system. When the computing nodes of the computing system and other computing nodes perform data transmission, one or more network card devices in the network card pool can be selected for data transmission according to the business requirements of the computing nodes, so as to fully utilize the communication performance of the network card device and improve the transmission performance of the data.

[0039] Please refer to Figure 1 , Figure 1 A schematic diagram of a computing system provided by an embodiment of the present application is shown in FIG. 1. Figure 1The computing system includes a plurality of computing nodes, a switching node, a memory pool and a network card pool, the memory pool includes a plurality of memory devices, and the network card pool includes a plurality of network card devices. The plurality of computing nodes, the plurality of memory devices and the plurality of network card devices are connected to the switching node through an interconnection bus protocol, wherein the interconnection bus protocol is a protocol that can realize data writing and reading through processor instructions, such as reading data in the memory and writing data into the memory through load / store instructions. The interconnection bus protocol can be a CXL (Compute Express Link) protocol, a high-speed serial computer expansion bus standard (PCIe), a unified bus (Unified Bus), Gen-Z, NVlink, etc.

[0040] Optionally, the interconnection bus protocol can realize the functions of memory device expansion, memory pooling, network card pooling, etc.

[0041] Figure 1 In the embodiment, the switching node includes a plurality of first ports and a plurality of second ports, the plurality of first ports are respectively used to connect different computing nodes, and the plurality of second ports are respectively used to connect different memory devices and network card devices. The network card pool and the memory pool are shared by the plurality of computing nodes. The network card pool and the memory pool in the computing system are decoupled from the computing nodes, and the plurality of computing nodes can access the memory pool and the network card pool through the switching node.

[0042] Optionally, the first port of the switching node is an upstream port (Upstream Switch Port, USP), and the second port is a downstream port (Downstream Switch Port, DSP). The switching node is connected to the computing nodes through the first port, and the switching node is connected to the memory pool and the network card pool through the second port.

[0043] If the plurality of computing nodes, the plurality of memory devices and the plurality of network card devices are connected to the switching node through the CXL protocol, the switching node, the plurality of computing nodes, the plurality of memory devices and the plurality of network card devices all support the CXL protocol. The first port and the second port are both CXL ports.

[0044] In the data transmission process, the computing node sends the message and the message corresponding message information to the switching node, and the switching node writes the message and the message information into the memory pool; then the switching node analyzes the message information, and determines the network card device in the network card pool for the message according to the message information, and then sends the message information to the allocated network card device, and the network card device reads the message in the memory pool according to the message information, and sends the message to the node of other computing system. It is easy to understand that one or more network card devices can be allocated to a computing node, for example, the computing node has multiple services, each service has a corresponding network card device, so as to fully utilize the performance of the network card device in the network card pool according to the service demand of the computing node, and improve the transmission performance of the computing node.

[0045] In some embodiments, if the plurality of computing nodes, the plurality of memory devices, and the plurality of network card devices are connected to the switching node through the CXL protocol respectively, the number of CXL links between the memory pool and the switching node is the same as the number of CXL links between the network card pool and the switching node, and the bandwidth of each CXL link is the same, so as to realize the bandwidth matching of the memory bandwidth, the network card bandwidth and the CXL link bandwidth. Avoid the communication performance being limited due to the mismatch of one of the bandwidths when the data transmission amount is large. And in the process of transmitting the message in the computing system, one or more network card devices are allocated to the computing node according to the service demand of the computing node, so as to fully utilize the performance of the network card device for the message transmission of the computing node and improve the performance of data transmission.

[0046] Optionally, if the plurality of computing nodes, the plurality of memory devices, and the plurality of network card devices are connected to the switching node through the CXL protocol respectively, the memory pool includes a plurality of memory devices, each memory device is connected to the switching node through a CXL link, and the CXL link supports memory interleaving (Memory Interleaving), which maps a continuous memory address to different memories or devices to improve memory access efficiency and performance. In this way, the switching node can write the first message into the plurality of memory devices of the memory pool.

[0047] Optionally, before data transmission, the number of CXL links can be preset so that the combined bandwidth of the CXL links is the same as the combined bandwidth of the NIC pool and the combined bandwidth of the memory pool. The NIC pool includes four NICs, each with a bandwidth of 10 Gbps, and the memory pool includes eight memory blocks, each with a bandwidth of 5 Gbps; the combined bandwidth of the NIC pool and the combined bandwidth of the memory pool are both 40 Gbps, and data transmission between the NIC pool and the memory pool is performed through two CXL links, each with a bandwidth of 20 Gbps. In this way, when the computing nodes between different computing systems perform packet transmission, since the combined bandwidth of the memory pool, the combined bandwidth of the CXL links, and the combined bandwidth of the NIC pool are all the same, i.e., the maximum bandwidth of the three is the same, it is avoided that the communication performance is limited due to the mismatch of the bandwidths of the three when large data transmission is performed.

[0048] Please refer to Figure 2 , Figure 2 A flowchart of a data transmission method provided by an embodiment of the present application is shown. Figure 2 The method shown is applied to a first computing system, which includes a plurality of computing nodes, a switching node, a memory pool, and a NIC pool. The memory pool includes a plurality of memory devices, the NIC pool includes a plurality of NIC devices, the switching node includes a plurality of first ports and a plurality of second ports, the plurality of first ports are respectively used to connect different computing nodes, and the plurality of second ports are used to connect different memory devices and NIC devices. The plurality of computing nodes, the plurality of memory devices, and the plurality of NIC devices are respectively connected to the switching node through an interconnection bus protocol, and the NIC pool and the memory pool are shared by the plurality of computing nodes. Figure 2 The data transmission method includes S201-S204.

[0049] S201, a first computing node in the plurality of computing nodes sends a first request to the switching node, and the first request includes a first packet and first packet information.

[0050] As can be easily understood, since the first memory pool is shared by the first computing node, the computing node, the NIC device, or the switching node can read data from or write data into the memory pool based on the interconnection bus protocol. Before sending the first packet, the first computing node first stores the first packet in the memory pool. Since the memory pool is decoupled from the computing node, the first computing node writes the first packet and the first packet information into the memory pool through the switching node.

[0051] The first packet is a packet sent by the first computing node, and the first computing node is a source node of the first packet.

[0052] The first packet information is used to describe information corresponding to the first packet, and the first packet information can include length information of the first packet and destination computing node information of the first packet.

[0053] Optionally, the first message information further comprises a memory address where the first message is stored. For example, the first message information comprises a pointer indicating the memory address where the first message is stored. For example, the first computing node writes the first message into the memory space of the memory pool through the switch node, and then the first computing node generates the first message information, which comprises the memory address of the memory space where the first message is stored, and then writes the first message information into the memory pool through the switch node.

[0054] S202, the switch node receives the first request and writes the first request into the memory pool.

[0055] Optionally, the memory pool supports memory interleaving, and the switch node writes the first message and the first message information into one or more memory devices corresponding to the memory pool, so as to write the first message into the memory pool corresponding to the computing node before sending the first message.

[0056] S203, the switch node sends the first message information to the first network card device.

[0057] Optionally, the switch node obtains the first message information from the memory pool and sends the first message information to the first network card device of the network card pool.

[0058] Optionally, the first message information comprises a destination node address of the first message, the switch node parses the first message information and determines that the destination node address of the first message does not belong to the current computing system, and then the switch node sends the first message information to the network card device in the network card pool, so as to send the first message to the computing node of another computing system through the network card device.

[0059] Optionally, each network card device in the network card pool has a corresponding waiting queue, and the waiting queue is used to store the messages to be sent by each network card device. The switch node determines the first network card device according to the length of the waiting queue of each network card device, wherein the first network card device can be an idle network card device in the network card pool or a network card device with the shortest waiting queue length.

[0060] Optionally, each network card device has a waiting queue, and after the switch node determines the corresponding network card device, the first message information is written into the waiting queue corresponding to the network card device, and the network card device can periodically read the waiting queue.

[0061] Optionally, the queue of the network card device can be stored in the memory space corresponding to each network card device, which can be a memory device in the switch node or a memory device carried by each network card device.

[0062] Optionally, before sending the first message information to the first network interface card (NIC) device, the switching node generates a descriptor that the first NIC device can read based on the first message information, and then sends the descriptor to the first NIC device.

[0063] S204. The first network card device obtains the first message based on the first message information and sends the first message to the second computing node, which belongs to the second computing system.

[0064] Optionally, the first network interface card (NIC) device accesses the memory pool through the switching node, obtains the storage address of the first packet in the memory pool according to the first packet information, reads the first packet from the memory pool through the storage address, and then sends the first packet to the second computing node, thereby realizing the transmission of the first packet.

[0065] Optionally, each network interface card (NIC) device has a corresponding waiting queue. The NIC device reads the packet information in the waiting queue in a specific order, such as according to the rules in the queue, first-in-first-out, that is, according to the writing order, the packet information is read earlier.

[0066] The second computing system differs from the first computing system. Figure 2 The data transmission method described herein is for data transmission between different computing systems.

[0067] Thus, the memory pool and network interface card (NIC) pool of this application are decoupled from the computing nodes of the computing system. The memory pool, NIC pool, computing nodes, and switching nodes communicate with each other through a bus interconnection protocol. Since the memory pool and NIC pool are shared by multiple computing nodes through the switching node, computing nodes, NIC devices, or switching nodes can read data from or write data to the memory pool via the bus interconnection protocol. During packet transmission, the computing node writes the first packet and its information to the memory pool through the switching node. The switching node then sends the first packet information to the NIC device. The NIC device retrieves the first packet from the memory pool using the first packet information and sends it to the destination node of another computing system. In other words, during packet transmission, one or more NIC devices from the NIC pool can be allocated to the computing node according to its service requirements, so as to fully utilize the performance of the NIC devices in the NIC pool for packet transmission and improve data transmission efficiency.

[0068] It is easy to understand that, according to the business needs of the computing nodes, a sending queue can be allocated to each computing node in the memory pool. For example, a sending queue can be allocated to each type of business in the computing node. The sending queue is stored in the memory pool. When the computing node sends a message, the computing node writes the first message information into the sending queue through the switch. The switching node reads the first message information in the sending queue in sequence and sends the first message according to the first message information.

[0069] In some embodiments, the writing of the first message and the first message information into the memory pool in S202 comprises:

[0070] writing the first message into a first cache space of the memory pool and writing the first message information into a sending queue of the memory pool;

[0071] In S203, the exchange node sends the first message information to the first network card device of the network card pool, comprising:

[0072] the exchange node reads the first message information from the sending queue and sends the first message information to the first network card device of the network card pool;

[0073] In S204, the first network card device acquires the first message according to the first message information, comprising:

[0074] the first network card device acquires the first message from the first cache space according to the first message information.

[0075] Thus, in the data transmission process, the first computing node as a sending node writes the first message and the first message information into the memory pool through the exchange node, the exchange node reads the first message information of the memory pool, parses the first message information, and then sends the first message information to the first network card device, so that the first network card device acquires the storage address of the first message and the destination node information according to the first message information, acquires the first message of the memory pool according to the storage address, and sends the first message to the destination node (i.e. the second computing node of the second computing system) according to the destination node information, so as to realize the transmission of data. By sending the first message information into the sending queue, the exchange node can read the message information in the sending queue in order, and sort multiple message information sent by the computing node through the sending queue. One or more sending queues can be allocated to each computing node according to the service demand of the computing node, and one network card device can be allocated to each queue. Different network card devices can be used for the transmission of messages of different services corresponding to the sending queue through the sending queue corresponding to the service of the computing node, so as to realize the corresponding relationship between the service of the computing node and the network card device through the sending queue, so that the network card devices in the network card pool can be fully utilized for data transmission of the computing node. Especially for the computing node executing multiple services at the same time, the performance of the network card devices in the network card pool can be fully utilized to improve the performance of data transmission.

[0076] When the computing node sends the first request to the switching node, the switching node forwards the first message and the first message information to the memory pool to realize writing the first message and the first message information into the memory pool, that is, the switching node does not analyze the first message and the first message information in the forwarding process to improve the speed of data forwarding. When the switching node analyzes the first message information according to the order in the sending queue, if the destination address of the first message is the computing node of another computing system, the switching node allocates a network card in the network card pool for the first message, and sends the first message information to the allocated network card, so that the network card reads the first message of the memory according to the first message information, and sends the first message to the destination node through the switching node.

[0077] It is easy to understand that if the source address and the destination address of the message are both the computing nodes of the first computing system, the transmission of the message through the network card is not needed in the message transmission process, that is, the transmission of the message between the multiple computing nodes of the same computing system can be realized.

[0078] Please refer to Figure 3 , Figure 3 A schematic diagram of a data transmission method provided by the embodiment of the application, the method further comprises:

[0079] S301, the first computing node sends a second request to the switching node, and the second request comprises a second message and second message information.

[0080] The source node of the second message is the first computing node, and the destination node is the third computing node of the first computing system.

[0081] Optionally, the second request is used to request sending the second message to the destination node.

[0082] Optionally, the second message information message comprises the destination address of the second message and the storage address of the second message in the memory.

[0083] S302, the switching node receives the second request, writes the second message into a second cache space of the memory pool, and writes the second message information into a sending queue.

[0084] The second cache space is a memory space allocated for the first computing node in the memory pool, and is also a memory space of the memory pool to which the first computing node writes the first message through the switching node.

[0085] The sending queue is used to store the message information corresponding to the message to be sent.

[0086] S303, the switching node reads the second message information from the sending queue, and determines the destination node of the second message to be the third computing node in the multiple computing nodes according to the second message information, and then writes the second message information into a receiving queue of the memory pool.

[0087] Optionally, the exchange node reads the second message information from the sending queue, determines that the destination address of the second message is one of the computing nodes of the first computing system, and then sends the second message information to the receiving queue of the computing node, that is, the transmission of the message does not need to pass through the network card device.

[0088] S304, the third computing node reads the second message information from the receiving queue, and reads the second message from the second cache space according to the second message information.

[0089] The receiving queue is used to store message information whose destination node is the third computing node. The third computing node reads the second message information from the receiving queue in sequence (for example, the first-in first-out of the queue rule), determines the storage address of the message in the memory pool according to the second message information, and then reads the second message from the storage address.

[0090] In this way, the multiple computing nodes of the first computing system transmit messages to each other without passing through the network card pool, so that the message transmission between the multiple computing nodes can be realized, the message information amount is reduced by analyzing the message information corresponding to the message by the exchange node, and the data transmission efficiency is improved compared with the message transmission between multiple nodes.

[0091] It is easy to understand that if the computing node in the computing system is the destination node of the message, the exchange node can receive the message through the network card and store the received message in the memory pool, so that the destination node can read the message from the memory pool.

[0092] Please refer to Figure 4 , Figure 4 A flowchart of a data transmission method provided by an embodiment of the present application is shown. The method further includes:

[0093] S401, the first network card device receives a third message and sends the third message to the exchange node, and the destination node of the third message is the first computing node.

[0094] Optionally, the network card device of the computing system receives a message sent by another computing system, and if the destination address of the message is a computing node of the computing system, the network card device stores the message in the memory pool through the exchange node.

[0095] S402, the exchange node receives the third message, writes the third message into the third cache space of the memory pool, and generates third message information corresponding to the third message.

[0096] Optionally, the third message information includes the memory address where the third message is stored in the memory pool and the destination computing node information.

[0097] Optionally, the switching node obtains the third message sent by the first network card device, and the third message further comprises destination computing node information corresponding to the third message.

[0098] Optionally, the third cache space is an address space of each network card device in the memory pool.

[0099] S403, the switching node writes the third message information into the receiving queue of the first computing node.

[0100] Optionally, each computing node has a corresponding receiving queue, and the computing node can periodically read the message information in the receiving queue.

[0101] S404, the first computing node reads the third message information from the receiving queue, and reads the third message from the third cache space according to the third message information.

[0102] Optionally, after the first computing node obtains the message information, the first computing node obtains a storage address of the third message in the memory pool from the message information. Since the memory pool is shared by multiple computing nodes, the computing node reads the third message from the memory pool through the switching node according to the storage address.

[0103] In this way, the computing node in the computing system is the destination address of the message, and the sending address of the message is the computing node of the other computing system. The network card device receiving the message stores the message in the memory pool. Then, when the network card device transmits the message to the computing node of the same computing system, the switching node can achieve this by transferring the message information corresponding to the message, without frequent transmission of the message, thereby reducing the data amount of the message transmission and improving the efficiency of the data transmission.

[0104] Optionally, one service of each computing node corresponds to one receiving queue, and each receiving queue corresponds to a network card device of one network card pool. In this way, when the computing node is the destination node, the messages of multiple services can be received by multiple network card devices. For example, one service corresponds to one receiving queue, one receiving queue corresponds to one network card device, and each network card device writes the received message into the corresponding receiving queue, so that the multiple network card devices of the network card pool can be fully utilized for message reception, thereby improving the efficiency of data transmission.

[0105] Please refer to Figure 5 , Figure 5 a schematic diagram of data transmission provided by the embodiment of the present application, Figure 5 In the first computing node of the first computing system, the first computing node stores the first message in the memory space of the memory pool through the switching node, writes the first message information into the sending queue, and the switching node does not need to parse the first message in the forwarding process of the first message and the first message information.

[0106] The exchange node can periodically read the first message information in the sending queue; by analyzing the first message information:

[0107] If the destination address of the first message belongs to the second computing node of the second computing system, i.e., the first message is a message between different computing systems, the exchange node sends the first message information to the allocated network card device. The target network card device obtains the first message information, determines the address of the memory space according to the first message information, reads the first message from the memory space according to the address; and then sends the first message to the second computing node of the second computing system;

[0108] If the destination address of the first message belongs to the third computing node of the first computing system, the exchange node writes the first message information into the receiving queue of the third computing node; the third computing node reads the first message information in the receiving queue; and then determines the address of the memory space through the first message information, and reads the first message from the memory space according to the address.

[0109] Figure 5 In some embodiments, the computing node can be allocated a sending queue and a receiving queue according to the service demand of the computing node, and the computing node can be allocated one or more sending queues or receiving queues, and the messages of the service corresponding to each sending queue or receiving queue are transmitted by the network card devices of the network card pool corresponding to the sending queue or receiving queue, so that the performance of the network card devices in the network card pool can be fully utilized, and the performance of the message transmission of the computing node can be improved.

[0110] Please refer to Figure 6 , Figure 6 A schematic diagram of an address space mapping relationship provided by an embodiment of the present application, Figure 6 The address space includes a host address space of the computing node and a link address space of the memory pool, wherein the link address space is mapped to the address of the memory pool, and the host address space is mapped to the host address space of the computing node that can access the memory pool.

[0111] The present application decouples the memory pool from the computing node, and manages the network card pool through the exchange node.

[0112] Optionally, the exchange node divides the memory pool into multiple pages, each page is greater than a preset memory threshold (for example, 2M), and in the process of mapping the address of the computing node to the memory pool, the mapping between the page and the address of the computing node can be established, so as to simplify the mapping process of the memory address.

[0113] Optionally, in the starting stage of the computing system, the exchange node establishes the mapping between the host address of each computing node and the link address space of the memory pool, so that the computing node can access the memory pool through the host address.

[0114] In some embodiments, the method further comprises:

[0115] The first computing node sends request information to the switching node, and the request information is used to apply for memory in the memory pool;

[0116] The switching node writes the request information into an instruction queue of the memory pool;

[0117] The switching node reads the request information in the instruction queue, generates response information according to the request information, and writes the response information into a response queue of the memory pool, and the response information carries allocated memory information; the first computing node reads the response information in the response queue through the switching node.

[0118] In this way, in the process of applying for memory in the memory pool, the computing node writes the memory application into the instruction queue in the memory pool through the switching node, the switching node reads the request information in the instruction queue according to a preset rule, allocates memory in the memory pool for the computing node according to the request information, and writes the allocated memory information into the response queue of the memory pool, and the computing node reads the response information in the response queue through the switching node to realize the application of the memory.

[0119] Optionally, each instruction queue corresponds to one computing node, so that multiple computing nodes write the request information into the corresponding instruction queue in the memory pool, so that the switching node can allocate memory in the memory pool for the multiple computing nodes according to the order of the request information in the instruction queue. Optionally, each computing node has a corresponding response queue, and each computing node periodically reads the information in the response queue corresponding thereto.

[0120] Optionally, when each computing node applies for memory through Daemon, the request information is written into the tail of the instruction queue in the memory pool, the switching node reads the request information from the head of the instruction queue in the memory pool, allocates memory for the computing node according to the request information, writes the response information into the tail of the response queue, and each computing node reads the response information from the head of the response queue through Daemon, and determines the allocated address according to the response information.

[0121] Optionally, each computing node manages the allocated memory space in the memory pool in the form of buddy system through Daemon.

[0122] It is easy to understand that when the application in the computing node is paused or closed, part of the memory space is released, and the computing node can release the memory space of the memory pool through the switching node.

[0123] In some embodiments, the method further comprises: the first computing node writes the request information into the instruction queue of the memory pool through the switching node;

[0124] The exchange node reads the request information in the instruction queue, generates response information according to the request information, and writes the response information into the response queue of the memory pool, the response information carrying a memory release result; the first computing node reads the response information in the response queue through the exchange node.

[0125] In this way, in the process of releasing the memory in the memory pool, the computing node writes the memory release application into the instruction queue in the memory pool through the exchange node, the exchange node reads the request information in the instruction queue according to a preset rule, releases the memory of the memory pool corresponding to the computing node according to the request information, and writes the response information carrying the release result into the response queue of the memory pool, and the computing node reads the response information in the response queue through the exchange node to realize the release of the memory.

[0126] Optionally, the computing node releases the memory space through the Daemon; for example, the Daemon reinserts the released memory space into the buddy system, and if the idle space in the buddy system exceeds a memory space threshold, the Daemon writes the request information into the instruction queue to release the memory space first.

[0127] It is easy to understand that when the computing node applies for the memory of the memory pool or releases the memory of the memory pool, the computing node can realize the inter-process communication between the network protocol and the daemon, wherein the network protocol can be the Transmission Control Protocol (TCP), Remote Direct Memory Access (RDMA), infiniband, RDMA over Converged Ethernet (RoCE), or the like. The following will be described taking the TCP protocol as an example. It is easy to understand that if at least one computing node has a memory device, and the memory of the memory device can be shared by multiple computing nodes of the computing system, then the memory available to each computing node includes two kinds: the memory in the memory pool and the memory in the computing node. Each computing node can use the interface function build_shared_skb between the TCP / IP protocol stack and the daemon process to allocate a sk_buf object in the private memory of the computing node, store a packet through the sk_buf object, and store the packet in the memory of the memory pool, the memory space being marked by a head_frag domain, and the memory in the memory pool and the memory in the computing node being distinguished through the marking of the head_frag domain.

[0128] When the compute node releases the memory, the compute node informs the daemon to release the memory space associated with the sk_buf object by kfree_shared_skb. This function is called by the TCP / IP protocol stack to release the sk_buf object marked by the head_frag field.

[0129] When the compute node needs to apply for a memory space, the TCP / IP protocol stack of the compute node requests the daemon to allocate a memory space from the memory pool by alloc_shared_skb, and sends a request message to the exchange node, so that the exchange node allocates the required memory for the compute node.

[0130] Optionally, during the startup phase of the computing system, the DRack driver in the compute node is responsible for requesting a continuous host address range (Fabric Address Range) in the physical address space of the compute node, so that the host address range is mapped to the memory address of the memory pool, so that the compute node can access the memory pool through the host address range.

[0131] Optionally, if the compute node has a memory device, and the memory of the memory device is shared by multiple compute nodes of the computing system, the DRack driver of the compute node sends local memory information to the exchange node, and the local memory information includes the address of the local memory.

[0132] Optionally, before packet transmission, or before the compute node sends the packet to the exchange node, the DRack driver of the compute node encapsulates the packet in the skb_buf object.

[0133] Please refer to Figure 7 , Figure 7 a comparison effect diagram provided by an embodiment of the present application, Figure 7 In (a), the horizontal coordinate is the bandwidth of the network card device, and the vertical coordinate is the communication time. As can be seen from (a), as the bandwidth of the network card communication increases, the communication time gradually decreases. The communication time of the present application is significantly smaller than that of the prior art, and the average communication time is reduced by 30.6%, which improves the performance of communication. Figure 7 In (b), the horizontal coordinate is the communication bandwidth, and the vertical coordinate is the latency (Latency). The upper graph is the p99 delay (Redis p99), and the lower graph is the average delay (Redis average). As can be seen from (b), the communication delay of the present application is significantly smaller than that of the prior art. That is, when the present application is applied to image recognition, database and other applications, the data communication performance can be significantly improved.

[0134] It should be understood that the above merely helps the person skilled in the art to better understand the embodiments of the present application, and is not intended to limit the scope of the embodiments of the present application. The person skilled in the art can obviously make various equivalent modifications or changes according to the above examples given, for example, some steps in each of the above methods can not be necessary, or some steps can be newly added, etc. Or a combination of any two or more embodiments. Such modifications, changes or combinations also fall within the scope of the embodiments of the present application.

[0135] It should also be understood that the ways, cases, categories and divisions of embodiments in the present application are only for the convenience of description and should not be construed as specific limitations. The features in various ways, categories, cases and embodiments can be combined without contradiction.

[0136] It should also be understood that the various numerical designations involved in the embodiments of the present application are only for the convenience of description and do not limit the scope of the embodiments of the present application. The size of the serial number of each process does not mean the order of execution, and the execution order of each process should be determined by its function and inherent logic, and should not constitute any limitation on the implementation process of the embodiments of the present application.

[0137] It should also be understood that the above description of the embodiments of the present application focuses on the differences between the various embodiments, and the same or similar aspects that are not mentioned can be referred to each other. For the sake of brevity, they will not be repeated here.

[0138] The above Figures 1-4 The embodiments of the method and system provided by the embodiments of the present application are described, and the electronic device provided by the embodiments of the present application is described.

[0139] The embodiments of the present application can divide the electronic device into functional modules according to the above method. For example, each functional module can be divided according to each function, or two or more functions can be integrated into a processing module. The integrated module can be realized in the form of hardware. It should be noted that the division of modules in the embodiments of the present application is illustrative, and is only a logical functional division. Actual implementation can have another division method.

[0140] It should be noted that the related content of each step involved in the above method embodiments can be cited to the functional description of the corresponding functional module, which will not be repeated here.

[0141] The flow monitoring system provided by the embodiments of the present application is used to execute the data transmission method provided by the above method embodiments, and therefore can achieve the same effect as the above implementation method.

[0142] In other embodiments, in the case of employing the integrated unit, the electronic device of the flow monitoring system or the network monitoring system can include a processing module, a storage module and a communication module. Among them, the processing module can be used to control and manage the actions of the electronic device. For example, it can be used to support the electronic device to execute the steps executed by the processing unit. The storage module can be used to support the storage of program codes and data, etc. The communication module can be used to support the communication between the electronic device and other network devices, and the communication of the electronic device.

[0143] Among them, the processing module can be a processor or a controller. It can be various exemplary logic blocks, modules and circuits described in combination with the disclosure of the present application. The processor can also be a combination of computing functions, such as a combination of one or more microprocessors, a combination of digital signal processing (digital signal processing, DSP) and microprocessors, etc. The storage module can be a memory. The communication module can be a device for interacting with other electronic devices, such as a radio frequency circuit, a Bluetooth chip, a Wi-Fi chip, etc.

[0144] Based on the same concept, the embodiments of the present application also provide an electronic device, see Figure 8 , Figure 8 The structure schematic diagram of an exemplary electronic device of the present application is shown, Figure 8 The electronic device shown can execute the steps in the data transmission method executed by any one of the electronic devices provided by the embodiments of the present application.

[0145] The electronic device 800 includes at least one processor 801, a memory 803 and at least one network interface 804.

[0146] ​The processor 801 is, for example, a general-purpose CPU, a digital signal processor (DSP), a network processer (NP), a GPU, a neural network processing units (NPU), a data processing unit (DPU), a microprocessor, or one or more integrated circuits or application specific integrated circuits (ASICs) for implementing the schemes of the present application, programmable logic devices (PLDs), or other programmable logic devices, transistor logic devices, hardware components, or any combination thereof. The PLD is, for example, a complex programmable logic device (CPLD), a field programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof. It can implement or execute various logical blocks, modules, and circuits described in connection with the disclosure of the present application. The processor can also be a combination of computing functions, such as a combination of one or more microprocessors, a combination of a DSP and a microprocessor, and the like.

[0147] Optionally, the electronic device 800 further includes a bus 802. The bus 802 is used to transmit information between the components of the electronic device 800. The bus 802 can be a peripheral component interconnect (PCI) bus or an extended industry standard architecture (EISA) bus, etc. The bus 802 can be divided into an address bus, a data bus, a control bus, etc. For ease of representation, Figure 8 In the figure, only one thick line is used to represent the bus, but it does not mean that there is only one bus or only one type of bus.

[0148] The memory 803 is, for example, a read only memory (ROM) or other type of storage device that can store static information and instructions, a random access memory (RAM), or other type of dynamic storage device that can store information and instructions, a electrically erasable programmable read only memory (EEPROM), a compact disc read only memory (CD ROM) or other optical disk storage, a magnetic disk storage or other magnetic storage devices, or any other medium capable of storing desired program code in the form of instructions or data structures and that can be accessed by a computer, but is not limited thereto. The memory 803 is, for example, independent and connected to the processor 801 through the bus 802. The memory 803 can also be integrated with the processor 801.

[0149] The network interface 804 uses any transceiver-like mechanism for communicating with other devices or a communication network, which can be an Ethernet, a radio access network (RAN), a wireless local area network (WLAN), etc. The network interface 804 can include a wired network interface and can also include a wireless network interface. Specifically, the network interface 804 can be an Ethernet interface, such as a fast Ethernet (FE) interface, a gigabit Ethernet (GE) interface, an asynchronous transfer mode (ATM) interface, a WLAN interface, a cellular network interface, or a combination thereof. The Ethernet interface can be an optical interface, an electrical interface, or a combination thereof. In some embodiments of the present application, the network interface 804 can be used for the electronic device 800 to communicate with other devices.

[0150] In a specific implementation, as some embodiments, the processor 801 can include one or more CPUs. Each of these processors can be a single core processor or a multiple core processor. The processor herein can refer to one or more devices, circuits, and / or processing cores for processing data (e.g., computer program instructions).

[0151] In a specific implementation, as some embodiments, the electronic device 800 can include a plurality of processors. Each of the processors can be a single-core processor or a multi-core processor. The processor herein can refer to one or more devices, circuits, and / or processing cores for processing data (such as computer program instructions).

[0152] In some embodiments, the memory 803 is configured to store program instructions for implementing the solutions of the present application, and the processor 801 can execute the program instructions stored in the memory 803. That is, the electronic device 800 can implement the method provided by the method embodiments shown in the above embodiments by the processor 801 and the program instructions in the memory 803. The program instructions can include one or more software modules. Alternatively, the processor 801 itself can also store program instructions for implementing the solutions of the present application.

[0153] In the implementation process, the processor 801 in the electronic device 800 of the present application reads the instructions in the memory 803, and executes the instructions to implement the solutions of the present application. Figure 8 The electronic device 800 shown in the above embodiments can perform all or part of the steps of the data transmission method performed by the electronic device in the above embodiments.

[0154] The steps of the method described in the above embodiments are completed by the integrated logic circuit of the hardware in the processor of the electronic device 800 or the instructions in the form of software. The steps of the method embodiments disclosed in the present application can be directly embodied as being executed by the hardware processor, or being executed by the combination of hardware and software modules in the processor. The software module can be located in the random access memory, the flash memory, the read-only memory, the programmable read-only memory, the electrically erasable programmable memory, the register, or other mature storage mediums in the field. The storage medium is located in the memory, and the processor reads the information in the memory and combines the hardware to complete the steps of the above method embodiments. To avoid repetition, they will not be described in detail here.

[0155] It is to be understood that the above-described processor can be a central processing unit (CPU), but can also be other general purpose processors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) or other programmable logic devices, discrete gates or transistor logic components, discrete hardware components, etc. The general purpose processor can be a microprocessor or any conventional processor, etc. It is to be noted that the processor can be an advanced RISC machine (ARM) architecture processor.

[0156] Further, in an optional embodiment, the above-described memory can include read-only memory and random access memory, and provide instructions and data to the processor. The memory can also include non-volatile random access memory. For example, the memory can also store device type information.

[0157] The memory can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memory. Among them, the non-volatile memory can be read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electrically EPROM (EEPROM) or flash memory. The volatile memory can be random access memory (RAM) used as an external cache. By way of example but not limitation, many forms of RAM are available. For example, static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), enhanced SDRAM (ESDRAM), synchlink DRAM (SLDRAM) and direct rambus RAM (DR RAM).

[0158] The electronic device provided in the embodiment can execute the method provided in the above method embodiment, and has similar implementation principles and technical effects, which will not be described herein.

[0159] The embodiment of the present application further provides a computer readable storage medium, which stores a computer program. The computer program is executed by a processor to implement the method provided in the above method embodiment.

[0160] The embodiment of the present application further provides a computer program product. When the computer program product is run on an electronic device, the electronic device is caused to implement the method provided in the above method embodiment.

[0161] The embodiment of the present application provides a chip, comprising a processor, configured to call and run instructions stored in a memory, so that a communication device installed with the chip executes the method provided in the above method embodiment.

[0162] The embodiment of the present application further provides a chip system, comprising a processor, and the processor is coupled with a memory. The processor executes a computer program stored in the memory to implement the method provided in the above method embodiment. The chip system can be a single chip or a chip module composed of multiple chips.

[0163] In the above embodiments, all or part of the embodiments can be implemented by software, hardware, firmware or any combination thereof. When implemented by software, all or part of the embodiments can be implemented in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, all or part of the processes or functions described in the embodiments are generated. The computer can be a general-purpose computer, a special-purpose computer, a computer network or other programmable devices. The computer instructions can be stored in a computer readable storage medium or transmitted by the computer readable storage medium. The computer instructions can be transmitted from one website, computer, server or data center to another website, computer, server or data center through wired (such as coaxial cable, optical fiber, digital subscriber line) or wireless (such as infrared, wireless, microwave, etc.) mode. The computer readable storage medium can be any available medium that can be accessed by a computer or a data storage device such as a server, data center, etc. integrated with one or more available media. The available media can be magnetic media (such as floppy disk, hard disk or magnetic tape), optical media (such as DVD), or semiconductor media (such as solid state disk (SSD)) and the like.

[0164] Those skilled in the art can understand that all or part of the processes in the above-mentioned embodiment methods can be implemented by a computer program instructing relevant hardware, and the program can be stored in a computer-readable storage medium. When the program is executed, the processes of the above-mentioned method embodiments can be included. The aforementioned storage medium can include ROM, random access memory (RAM), magnetic disk or optical disk, and various program code storage media.

[0165] The naming or numbering of the steps in the present application does not mean that the steps in the method process must be executed in the time / logical order indicated by the naming or numbering. The execution order of the named or numbered process steps can be changed according to the technical purpose to be achieved, as long as the same or similar technical effects can be achieved.

[0166] In the above embodiments, the description of each embodiment has its own focus. The parts not described or recorded in detail in a certain embodiment can be referred to the related description of other embodiments.

[0167] In the embodiments provided in the present application, it should be understood that the disclosed devices / apparatuses and methods can be implemented by other means. For example, the above-described device / apparatus embodiment is only schematic, and the division of the modules or units is only a logical function division, and there can be another division manner in actual implementation, for example, a plurality of units or components can be combined or integrated into another system, or some features can be ignored or not executed. In addition, the coupling or direct coupling or communication connection between the shown or discussed mutual objects can be indirect coupling or communication connection through some interfaces, devices or units, and can be electrical, mechanical or other forms.

[0168] It should be understood that, in the description of the present application and the appended claims, the terms "comprise", "include", "have" and any variations thereof are intended to cover non-exclusive inclusion, and mean "including but not limited to", unless otherwise specifically emphasized. For example, a process, method, system, product or device that includes a series of steps or modules does not necessarily limit to those clearly listed steps or modules, but can include other steps or modules that are not clearly listed or inherent to these processes, methods, products or devices.

[0169] In the description of the present application, unless otherwise specified, " / " means that the associated objects before and after are in an "or" relationship, for example, A / B can represent A or B; "and / or" in the present application is used to describe the association relationship of the associated objects, which means that there can be three relationships, for example, A and / or B, which can represent three cases of A alone, A and B together, and B alone, where A and B can be singular or plural.

[0170] Also, in the description of the application, "multiple" means two or more, unless otherwise specified. "At least one of' or like terms means any one of the items in the list, including single items or combinations of items. For example, "at least one of a, b, or c" can mean a, b, c, a-b, a-c, b-c, or a-b-c, where a, b, and c can be single items or multiple items.

[0171] As used in the description of the application and the appended claims, the term "if' can be interpreted to mean "when" or "upon" or "in response to determining" or "in response to detecting," depending on the context. Similarly, the phrase "if it is determined" or "if [a described condition or event] is detected" can be interpreted to mean "upon determining" or "in response to determining" or "upon detecting [the described condition or event]" or "in response to detecting [the described condition or event]," depending on the context.

[0172] In addition, the terms "first," "second," and the like, as used in the description of the application and the appended claims, are used for distinguishing between similar elements and not necessarily for describing a particular sequential or chronological order. It is to be understood that the use of these terms in the description and claims is solely intended to distinguish the corresponding elements from other elements. Unless specifically stated otherwise, the use of terms such as "first" and "second," etc. does not indicate that the corresponding elements so designated must be in a particular order or occur in a particular order in the disclosure.

[0173] In the application embodiments, the words "exemplary" and "for example" are used to mean serving as an example, instance, or illustration. Any implementation described herein as "exemplary" or "for example" is not necessarily to be construed as preferred or advantageous over other implementations. The illustrative embodiments of the application are based on the concept that the application is applicable to a wide range of implementations.

[0174] In the description of the application, references to "one embodiment" or "some embodiments" means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the application. The appearances of the phrases "in one embodiment," "in some embodiments," "in other embodiments," "in additional embodiments," and so on, in various places in the specification are not necessarily all referring to the same embodiment, unless otherwise specifically stated. Rather, such language means that at least one embodiment of the application has the particular feature, structure, or characteristic being described.

[0175] Finally, it should be noted that: the above embodiments are only used to illustrate the technical solutions of the present application, but not to limit them; although the present application has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that: it can still modify the technical solutions recorded in the foregoing embodiments, or make equivalent replacement for part or all of the technical features; and these modifications or replacements do not make the essence of the corresponding technical solutions deviate from the scope of the technical solutions of the embodiments of the present application.

Claims

1. A data transmission method, characterized in that, The invention is applied to a first computing system, which includes multiple computing nodes, a computing interconnect protocol switching node, a memory pool, and a network interface card (NIC) pool. The memory pool includes multiple memory devices, and the NIC pool includes multiple NIC devices. The multiple computing nodes, the memory devices, and the NIC devices are respectively connected to the switching node via an interconnect bus protocol. The NIC pool and the memory pool are shared by the multiple computing nodes. The method includes: The first computing node among the plurality of computing nodes sends a first request to the switching node, the first request including a first message and first message information; The switching node receives the first request and writes the first request into the memory pool; The switching node sends the first message information to the first network interface card device; The first network interface card device obtains the first message based on the first message information and sends the first message to the second computing node, which belongs to the second computing system.

2. The method according to claim 1, characterized in that, The step of writing the first request into the memory pool includes: Write the first message into the first cache space of the memory pool, and write the first message information into the sending queue of the memory pool; The switching node sends the first message information to the first network interface card device, including: The switching node reads the first message information from the sending queue and sends the first message information to the first network interface device in the network interface pool; The first network interface card (NIC) device obtains the first packet based on the first packet information, including: The first network interface card device retrieves the first packet from the first cache space based on the first packet information.

3. The method according to claim 2, characterized in that, The method further includes: The first computing node sends a second request to the switching node, the second request including a second message and second message information; The switching node receives the second request, writes the second message into the second cache space of the memory pool, and writes the second message information into the sending queue; The switching node reads the second message information from the sending queue; If the second message information indicates that the destination node of the second message is the third computing node of the first computing system, then the switching node writes the second message information to the receive queue of the memory pool; The third computing node reads the second message information from the receiving queue and reads the second message from the second cache space according to the second message information.

4. The method according to claim 2, characterized in that, The method further includes: The first network interface card device receives the third message and sends the third message to the switching node, wherein the destination node of the third message is the first computing node; The switching node receives the third message, writes the third message into the third cache space of the memory pool, and generates the third message information corresponding to the third message. The switching node writes the third message information into the receiving queue of the first computing node; The first computing node reads the third message information from the receiving queue and reads the third message from the third buffer space according to the third message information.

5. The method according to claim 1, characterized in that, The method further includes: The first computing node writes the request information into the instruction queue of the memory pool through the switching node. The request information is used to request or release memory. The switching node reads the request information from the instruction queue, generates response information based on the request information, and writes the response information into the response queue of the memory pool; The first computing node reads the response information from the response queue through the exchange node.

6. A data transmission method, characterized in that, A switching node is applied to a first computing system, the first computing system further includes computing nodes, a memory pool and a network interface card (NIC) pool, the memory pool includes multiple memory devices, the NIC pool includes multiple NIC devices, multiple computing nodes, the memory devices and the NIC devices are respectively connected to the switching node, and the NIC pool and the memory pool are shared by multiple computing nodes; The method includes: The switching node receives a first request sent by a first computing node among multiple computing nodes and writes the first request into the memory pool. The first request includes a first message and first message information. The destination node of the first message is a second computing node, and the second computing node belongs to a second computing system. The switching node sends the first message information to the first network interface card device.

7. The method according to claim 6, characterized in that, The step of writing the first request into the memory pool includes: Write the first message into the first cache space of the memory pool, and write the first message information into the sending queue of the memory pool; The switching node sends the first message information to the first network interface card device, including: The switching node reads the first message information from the sending queue and sends the first message information to the first network interface card device.

8. The method according to claim 7, characterized in that, The method further includes: The switching node receives the second request, writes the second message in the second request into the second cache space of the memory pool, and writes the second message information in the second request into the sending queue; The switching node reads the second message information from the sending queue. The destination node of the second message is the third computing node of the first computing system. The third computing node is connected to the switching node through the first port. If the second message information indicates that the destination node of the second message is the third computing node of the first computing system, then the switching node writes the second message information to the receive queue of the memory pool; The third computing node reads the second message information from the receiving queue and reads the second message from the second cache space according to the second message information.

9. An electronic device, characterized in that, include: The memory includes computer-readable instructions; A processor communicating with the memory, the processor being configured to execute the computer-readable instructions, causing the electronic device to perform the data transmission method of any one of claims 6-8.

10. A computer program product, characterized in that, The computer program product includes instructions that, when executed by a computer, implement the data transmission method as described in any one of claims 6-8.