RDMA network receiving side load balancing method, device, equipment, medium and product

By designing a load balancing method on the receiving side of the RDMA network, using hashing technology and virtual functions for traffic and load balancing allocation, the processing performance bottleneck and tail delay problems on the receiving side of the RDMA network in congestion scenarios are solved, and inter-stream balance processing and performance improvement are achieved.

CN120034492AActive Publication Date: 2025-05-23WUXI STARS MICRO SYSTEM TECHNOLOGIES CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
CN202510185560.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-02-19
Publication Date
2025-05-23
Estimated Expiration
2045-02-19

AI Technical Summary

Technical Problem

The RDMA network reception side has problems of traffic and load imbalance in congestion scenarios, resulting in increased processing performance bottlenecks and tail latency.

Method used

By designing load balancing between the receiving buffer and the receiving side processing engine, using hashing technology to string messages from different data streams into different linked lists, and classifying and scheduling the linked lists according to the load status of the receiving side processing engine, balancing allocation of traffic and load is achieved.

Benefits of technology

Implement inter-stream balanced processing in congestion, supports inter-stream transcendence, reduces the tail delay of small packets, and improves system performance and reliability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120034492A_ABST
    Figure CN120034492A_ABST
Patent Text Reader

Abstract

The invention relates to the technical field of computer network communication, and discloses an RDMA network receiving side load balancing method, device and equipment, a medium and a product, the RDMA network receiving side comprises a receiving buffer area and a receiving side processing engine, and the method comprises the following steps: acquiring received flow data from the receiving buffer area; hashing the traffic data to obtain data chain tables corresponding to messages of different data streams; classifying the data chain table according to the load state of the receiving side processing engine; performing flow control polling fair scheduling based on a virtual function corresponding to the data chain table, and scheduling a corresponding target message from the target data chain table; and transmitting the target message to a target receiving side processing engine based on the load condition of the current receiving side processing engine. The flow and load balancing design is carried out based on a receiving side congestion scene, any number of receiving side processing engines can be integrated according to a protocol, and inter-flow balance processing is ensured to be provided under the congestion condition.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of computer network communication technology, and in particular to a method, device, equipment, medium and product for load balancing on the receiving side of an RDMA network. Background Art

[0002] RDMA (Remote Direct Memory Access) is a direct memory access technology used to solve the server-side data processing delay in network transmission. Its core concept is to allow one computer system to directly read and write the memory of another system without involving too much intervention from the operating system kernel and CPU of both parties.

[0003] RDMA is a stateful service. There are mutual impacts between single-stream processing contexts, so single-stream performance will become a performance bottleneck on the receiving side. There may be header blocking between the received traffic inside the network card. For example, when the function of a specific traffic has a write host traffic bottleneck, it may cause congestion of the overall network card receiving traffic. In order to improve processing performance, the receiving side usually divides the processing into multiple pipeline operations. However, due to the processing of stateful services, the processing in the later pipeline may affect the processing in the previous pipeline; therefore, there is a natural processing bottleneck in the pipeline level of the same stream. High-bandwidth and high-performance processing usually requires the use of multiple engines similar to multi-processes to parallelly process related business traffic; however, RDMA is a stateful service. Services with the same traffic are coupled and cannot interact between multiple engine processing modules, resulting in different load states of multiple engines, affecting the ultimate performance.

[0004] Therefore, there is an urgent need for a traffic and load balancing method based on the congestion scenario on the receiving side of the RDMA network to ensure balanced processing between flows under congestion conditions. Summary of the invention

[0005] In view of this, the present application provides a method, device, equipment, medium and product for load balancing on the receiving side of an RDMA network. In a congestion scenario on the receiving side of an RDMA network, a traffic and load balancing method is performed to ensure balanced processing between flows under congestion conditions. The technical solution is as follows.

[0006] In a first aspect, the present application provides a load balancing method for an RDMA network receiving side, wherein the RDMA network receiving side includes a receiving buffer and a receiving side processing engine, and the method includes:

[0007] Obtain received traffic data from the receiving buffer; the traffic data is composed of messages of multiple different data flows;

[0008] The traffic data is hashed to obtain a data linked list corresponding to the messages of different data flows;

[0009] Classifying the data linked list according to the load status of the receiving-side processing engine;

[0010] Select the virtual function corresponding to the data linked list, perform flow control polling fair scheduling based on the virtual function, and schedule the corresponding target message from the target data linked list;

[0011] Based on the load condition of the current receiving-side processing engine, the target message is transmitted to the target receiving-side processing engine.

[0012] In an optional implementation, after the step of transmitting the target message to the target receiving side processing engine, it also includes: locking the target data linked list, and releasing the lock on the target data linked list after the target receiving side processing engine processes the target message.

[0013] In an optional implementation, the data linked list is classified according to the load state of the receiving-side processing engine, including:

[0014] The data linked list is classified based on the physical function or the virtual function through a load balancing algorithm, so that the traffic of the physical function or the virtual function is fairly scheduled.

[0015] In an optional implementation, performing flow control polling fair scheduling based on the virtual function to schedule a corresponding target message from a target data linked list includes:

[0016] When there is traffic congestion in the scheduling function, the corresponding scheduling function is suspended to schedule messages from the data linked list.

[0017] The RDMA network receiving side load balancing method provided in this application has the following advantages:

[0018] The RDMA network receiving side load balancing method of the present application is based on the receiving side congestion scenario, and performs load balancing design between the receiving buffer and the receiving side processing engine, and performs traffic balancing design between virtual functions. Before the receiving buffer pushes the message to the receiving side processing engine, the received traffic data is obtained from the receiving buffer, and the traffic data is composed of messages from multiple different data streams. The message is first hashed; the hashing function strings the messages of different streams into different chains. Since different traffic does not need to be sequenced, small packets can be surpassed in harsh conditions. After the messages are chained by hashing, a locking function is performed on each linked list. After each linked list dispatches a message, the linked list is locked to ensure that only one message of the same stream will be processed in the subsequent module. After the subsequent module is processed, the corresponding linked list will be released so that the next message can be scheduled for processing. Based on traffic division methods such as VF (Virtual Function), the traffic corresponding to the linked list is allocated. When there is congestion in the VF traffic, the scheduling of the corresponding VF is stopped to avoid scheduling the corresponding message to the receiving side processing engine for processing, which occupies the processing space of the receiving side processing engine, thereby achieving traffic balancing. In addition, the traffic corresponding to the linked list can also be allocated based on PF (Physical Function). The messages scheduled from the data linked list are allocated to different receiving side processing engines for processing based on the current load of each receiving side processing engine. Since each flow will only have one message processing flow, there will be no context interaction between the receiving side processing engines, and there will be no fallback processing of different flows in the same receiving side processing engine. Ensure that balanced processing between flows is provided in the case of congestion on the receiving side; support inter-flow transcendence to reduce the tail delay of small packets; support flexible architecture to improve performance.

[0019] In a second aspect, the present application provides a load balancing device for a receiving side of an RDMA network, wherein the receiving side of the RDMA network includes a receiving buffer and a receiving side processing engine, and the device includes:

[0020] An acquisition module, used for acquiring received traffic data from a receiving buffer; the traffic data is composed of messages of multiple different data flows;

[0021] A hash module is used to hash the traffic data to obtain a data linked list corresponding to the messages of different data flows;

[0022] A distribution module, used for classifying the data linked list according to the load status of the receiving side processing engine;

[0023] A scheduling module is used to select a virtual function corresponding to the data linked list, perform flow control polling fair scheduling based on the virtual function, and schedule the corresponding target message from the target data linked list;

[0024] The processing module is used to transmit the target message to the target receiving side processing engine based on the load condition of the current receiving side processing engine.

[0025] In an optional implementation, the scheduling module is further used to lock the target data linked list, and release the lock on the target data linked list after the target receiving side processing engine has processed the target message.

[0026] In an optional implementation, the scheduling module is further used to: when there is traffic congestion in the scheduling function, suspend the corresponding scheduling function from scheduling messages from the data linked list.

[0027] In an optional implementation, the allocation module is specifically used to: classify the data linked list based on the physical function or the virtual function through a load balancing algorithm, so as to fairly schedule the traffic of the physical function or the virtual function.

[0028] In a third aspect, the present application provides a computer device, comprising: a memory and a processor, the memory and the processor are communicatively connected to each other, the memory stores computer instructions, and the processor executes the RDMA network receiving side load balancing method of the above-mentioned first aspect or any corresponding embodiment thereof by executing the computer instructions.

[0029] In a fourth aspect, the present application provides a computer-readable storage medium having computer instructions stored thereon, the computer instructions being used to enable a computer to execute the RDMA network receiving side load balancing method of the above-mentioned first aspect or any corresponding embodiment thereof.

[0030] In a fifth aspect, the present application provides a computer program product, including computer instructions, which are used to enable a computer to execute the RDMA network receiving side load balancing method of the above-mentioned first aspect or any corresponding embodiment thereof. BRIEF DESCRIPTION OF THE DRAWINGS

[0031] In order to more clearly illustrate the specific implementation methods of the present application or the technical solutions in the prior art, the drawings required for use in the specific implementation methods or the description of the prior art will be briefly introduced below. Obviously, the drawings described below are some implementation methods of the present application. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying any creative work.

[0032] Figure 1 It is a flowchart of a typical RX processing flow.

[0033] Figure 2 It is a flowchart of the RX Engine exception handling pipeline.

[0034] Figure 3 It is a flowchart of the multi-RX Engine parallel processing process.

[0035] Figure 4 It is a flowchart of a method for load balancing on the receiving side of an RDMA network according to an exemplary embodiment of the present application.

[0036] Figure 5 It is a schematic diagram of traffic load balancing processing according to an exemplary embodiment of the present application.

[0037] Figure 6 It is a structural diagram of the RDMA network receiving side load balancing device provided in an embodiment of the present application.

[0038] Figure 7 It is a structural schematic diagram of a computer device provided in an optional embodiment of the present application. DETAILED DESCRIPTION

[0039] In order to make the purpose, technical solution and advantages of the embodiments of the present application clearer, the technical solution in the embodiments of the present application will be clearly and completely described below in conjunction with the drawings in the embodiments of the present application. Obviously, the described embodiments are part of the embodiments of the present application, not all of the embodiments. Based on the embodiments in the present application, all other embodiments obtained by those skilled in the art without making creative work are within the scope of protection of this application.

[0040] First, the terms involved in this application are introduced.

[0041] RDMA: Remote Direct Memory Access, a technology that solves the server-side data processing delay in network transmission;

[0042] CPU: Central Processing Unit;

[0043] RX Engine: receiving side processing engine;

[0044] RC: Reliable Connections, a type of transmission service in RDMA technology, i.e., reliable connection;

[0045] InfiniBand: A high-speed, low-latency computer network communications standard;

[0046] WR: Work Request, work request issued by the user process;

[0047] SEND: An RDMA operation type used by the local end to send data to the remote end, which needs to be received by the remote end;

[0048] WRITE: An RDMA operation type used by the local end to write data to the remote end;

[0049] RX_BUFFER: receiving side buffer space;

[0050] PIPE1, PIPE2, PIPE3: Pipelines used to describe the flow of data through different processing stages.

[0051] In traditional network communications, when a computer system needs to transmit data to another system, the data usually needs to go through multiple levels of processing. For example, at the sending end, the data is first copied from the application buffer to the operating system kernel buffer, and then sent to the network after being encapsulated by the network protocol stack. At the receiving end, the data needs to be unpacked in reverse and copied from the kernel buffer to the application buffer. This multiple data copies and complex software layer processing process bring many problems.

[0052] High latency: The transmission and processing of data between different layers takes a lot of time, resulting in a significant increase in end-to-end latency, which is extremely unfavorable for application scenarios with high real-time requirements, such as financial trading systems and real-time data interaction in high-performance computing. Low bandwidth utilization: Frequent data copy operations and the processing overhead of the operating system and network protocol stack occupy a large amount of CPU resources and network bandwidth, greatly reducing the bandwidth that can actually be used for effective data transmission.

[0053] To overcome these defects of traditional network communication, RDMA technology came into being. The core concept of RDMA is to allow a computer system to directly read and write the memory of another system without involving too much intervention from the operating system kernel and CPU of both parties. In RDMA technology, the commonly used reliable connection service type RC can ensure that the information is sent to the destination end completely and accurately, and the destination end returns a response to notify the requesting end that the information has been received completely and accurately. The RC service type supports the following types of operations: SEND operation: This end sends data to the remote end, which is stored in the receiving space. The remote host reads the data for processing, and returns ACK (Acknowledgement) after receiving it. WRITE operation: This end writes data to the remote end without the intervention of the remote host side, and the remote end returns ACK after completion. READ operation: This end reads data from the remote end without the intervention of the remote host side, and the remote end returns RESP to carry the data to this end after completion.

[0054] Due to the above advantages, currently, whether it is a standard card or a smart network card, it is usually necessary to offload the RDMA protocol to the internal implementation of the network card. However, the RDMA protocol is a stateful protocol offload, and the typical receiving side protocol offload implementation has the following bottlenecks:

[0055] As a popular high-speed network solution, RDMA has high bandwidth and low latency as its important technical features. In the current GPU traffic training model, the slowest path will become the biggest bottleneck of training efficiency, and tail latency will become an increasingly important indicator. On the receiving network card side, incast congestion will cause the tail latency of the mouse flow to increase rapidly. Mouse flows are usually very sensitive to latency. Figure 1 As shown in the figure, in a typical RDMA RX Engine processing flow, packets enter the network card in sequence and are stored in the BUFFER space of the network card. RX_BUFFER pushes the packets to RX_ENG for processing in sequence. Different colors represent different flows, and the processing does not need to maintain the order. Due to the congestion of the network card receiving process, the red traffic will be queued very far behind, and it is impossible to achieve the surpassing of delay-sensitive traffic.

[0056] In terms of technical processing implementation, traffic is usually sent and received in burst mode; therefore, the burst of large traffic will cause the receiving side to process traffic in a single-stream state for a short period of time; and RDMA is a stateful service, and there is mutual influence between single-stream processing contexts, so single-stream performance will become a performance bottleneck on the receiving side. Figure 1 As shown in the figure, when RX_Engine processes messages sequentially, a lot of the data in front is the same flow data, such as the yellow flow in the figure, which is processed into a single flow processing performance in a short time, which will lead to the overall RX_ENGNE performance reduction. There may be header blocking between the internal receiving flows of the network card. For example, when the function of a specific flow has a bottleneck of writing host flow, it may cause the overall network card receiving flow congestion.

[0057] In order to improve processing performance, the receiving side usually divides the processing into multiple pipeline operations. However, due to the processing of stateful services, the processing in the later pipeline may affect the processing in the previous pipeline; therefore, there is a natural processing bottleneck in the pipeline level of the same flow. Figure 2 As shown in the figure, during the exception handling process, if an error occurs in PIPE3, it may affect the message processing of the same flow in PIPE2. If the messages in different flows belong to different traffic flows, they will not affect each other.

[0058] High-bandwidth and high-performance processing usually requires the use of multiple engines similar to multi-process to parallelly process related business traffic, such as Figure 3As shown. RDMA is a stateful service. Services with the same traffic are coupled and cannot interact between multiple Engine processing modules, resulting in different load states for multiple Engines, which affects the ultimate performance. As shown in the figure, when ENG0 is congested and cannot be processed, the messages of the same flow cannot go to other ENGs because they are stateful services; and other flows will be blocked by messages in the RX BUFFER, causing RX_ENG1 to be idle.

[0059] In order to solve the congestion situation on the receiving side in the implementation scheme of RDMA protocol offloading, the embodiment of the present application provides a load balancing method on the receiving side of an RDMA network to ensure balanced processing between flows in congested conditions; support overtaking between flows to reduce tail delays of small packets; support flexible architecture to improve performance.

[0060] The RDMA network receiving side load balancing method of this embodiment, the RDMA network receiving side includes a receiving buffer and a receiving side processing engine. The method flow of this embodiment is as follows Figure 4 As shown, the following steps are included:

[0061] S401. Obtain received traffic data from a receiving buffer; the traffic data is composed of messages of multiple different data flows.

[0062] Specifically, in step S401, before the receiving buffer pushes the message to the receiving side processing engine, the received traffic data is obtained from the receiving buffer, and the traffic data consists of messages of multiple different data flows.

[0063] S402: Hash the traffic data to obtain data linked lists corresponding to messages of different data flows.

[0064] Specifically, in step S402, the traffic data is hashed by a hash algorithm, and the messages of different data flows are strung into different data linked lists. The purpose of the hash operation is to assign data packets of different data flows to different linked lists, ensuring that data packets of the same flow are processed in sequence during subsequent processing. The messages of each data flow are formed into different linked lists, so that the data of different data flows do not interfere with each other during processing, effectively reducing the problem of congestion of all flows caused by congestion of the flow of a specific linked list.

[0065] S403: Classify the data linked list according to the load status of the receiving-side processing engine.

[0066] Specifically, in step S403, traffic is allocated based on VF (Virtual Function). Each virtual function (VF) corresponds to different traffic, and congestion is controlled by real-time monitoring of traffic. When congestion occurs in the traffic of a VF, the scheduling of the VF is suspended to prevent the VF from continuing to occupy resources and affecting the overall performance of the system. This method effectively avoids excessive occupation of resources, especially under high load conditions, and can balance the load between different flows and reduce system congestion and delay. In addition, the traffic corresponding to the linked list can also be allocated based on PF (Physical Function).

[0067] Optionally, in the above steps, the classification of the data linked list depends on the load balancing algorithm, but the specific implementation method is different from the traditional load balancing. Specifically, according to the load status of the receiving side processing engine, the data linked list is first statically hashed and distributed, and different flows are dispersed into multiple linked lists by evenly distributing the hash key values ​​of the flows. This is essentially a static load balancing strategy. Hash diversion only completes the initial load distribution, and the subsequent steps need to rely on the dynamic load balancing algorithm for adjustment. For example, the newly arrived message is allocated to the processing engine with the least number of active connections through the minimum connection number algorithm to avoid overloading a single engine, monitor the queue depth and processing delay of each engine in real time, and give priority to the node with the lightest load. For another example, the weighted polling algorithm is used to allocate weight values ​​according to the processing capacity of the receiving side engine, and the messages are allocated to different processing engines in proportion according to the weight values, so as to allocate more resources for high-priority VFs or traffic categories. Through the hierarchical collaboration of static load balancing and dynamic load balancing, the requirements of data flow order preservation, low latency and high throughput can be taken into account.

[0068] S404: Select a virtual function corresponding to the data linked list, perform flow control polling fair scheduling based on the virtual function, and schedule the corresponding target message from the target data linked list.

[0069] Optionally, in step S404, after the corresponding message is dispatched from the data linked list through the dispatch function, the linked list is locked to ensure that only one message of the same flow is processed in the subsequent module. The main purpose of locking is to prevent multiple messages from being dispatched to the subsequent processing module at the same time, causing resource competition and conflict. After the subsequent module is processed, the corresponding linked list will be released so that the next message can be dispatched for processing. In this way, resource conflicts and interference between different flows can be avoided, ensuring efficient traffic scheduling.

[0070] S405: Based on the load condition of the current receiving-side processing engine, transmit the target message to the target receiving-side processing engine.

[0071] Specifically, in step S405, each ENGINE (processing unit) is assigned to different processing units according to its current load. At the same time, each ENG will only process one message of one stream, and multiple streams can process multiple messages at the same time, so there is no context switching or fallback problem between different streams. In this way, the load of each processing unit can be optimized, avoiding the performance loss caused by context switching, and improving the parallel processing capability of multi-core and multi-processing unit systems.

[0072] In summary, the RDMA network receiving side load balancing method provided by the embodiment of the present application is based on the receiving side congestion scenario, performs load balancing design between the receiving buffer and the receiving side processing engine, and performs traffic balancing design between virtual functions. Before the receiving buffer pushes the message to the receiving side processing engine, the received traffic data is obtained from the receiving buffer, and the traffic data is composed of messages of multiple different data streams. The message is first hashed; the hashing function strings the messages of different streams into different chains. Since different traffic does not need to be sequenced, small packets can be surpassed in harsh conditions. After the message is chained by hashing, a locking function is performed on each linked list. After each linked list schedules a message, the linked list is locked to ensure that only one message of the same stream will be processed in the subsequent module. After the subsequent module is processed, the corresponding linked list will be released so that the next message can be scheduled for processing. Based on traffic division methods such as VF (Virtual Function), the traffic corresponding to the linked list is allocated. When there is congestion in the VF traffic, the scheduling of the corresponding VF is stopped to avoid scheduling the corresponding message to the receiving side processing engine for processing, which occupies the processing space of the receiving side processing engine, thereby achieving traffic balancing. In addition, the traffic corresponding to the linked list can also be allocated based on PF (Physical Function). The messages scheduled from the data linked list are allocated to different receiving side processing engines for processing based on the current load of each receiving side processing engine. Since each flow will only have one message processing flow, there will be no context interaction between the receiving side processing engines, and there will be no fallback processing of different flows in the same receiving side processing engine. Ensure that balanced processing between flows is provided in the case of congestion on the receiving side; support inter-flow transcendence to reduce the tail delay of small packets; support flexible architecture to improve performance.

[0073] Exemplarily, based on the RDMA network receiving side load balancing method of the above embodiment, a traffic load balancing module is constructed between RX_BUFFER and RX_ENG, such as Figure 5As shown in the figure, by hashing the traffic, the function of header blocking between flows can be avoided, and the delay of small packets can be reduced at the same time; the hashed traffic can be distinguished by HASH and VF to realize function-based traffic balancing control. By performing HASH operation on the hashed traffic, different traffic can be assigned to different virtual functions (VFs) for processing. Each VF can be regarded as an independent virtual function unit responsible for processing the message of a certain flow. By distinguishing based on VF, traffic balancing control can be effectively realized to avoid congestion and blocking between VFs. VF is allocated and managed through traffic scheduling, which avoids competition or resource contention among multiple traffic processing tasks in the same VF, thereby reducing system congestion and delay, and avoiding blocking between functions; at the same time, there is a locking function for each flow in the process of traffic scheduling, ensuring that only one message per flow will be in the pipeline processed by RX at the same time, avoiding the fallback processing of stateful services, and ensuring that there is no blocking problem between each ENG, so that the load between ENGINEs can be balanced. This traffic load balancing module has a flexible structure and can integrate any number of RX_ENGINEs according to performance. It can implement single-stream locking, realize the conversion of stateful services to stateless services, avoid conflicts, and solve the problem of multi-stage pipeline rollback. It can achieve traffic balancing based on traffic division such as PF / VF. In addition, it can realize the conversion of stateful services to quasi-stateless services, improve parallel processing capabilities, and achieve load balancing between Engines.

[0074] By introducing traffic load balancing modules, linked list locking and unlocking mechanisms, VF traffic control, and intelligent message scheduling, the traffic management and load balancing on the RDMA receiving side are optimized. These measures can effectively reduce resource competition and avoid congestion when facing large-scale data flows and complex network loads, thereby improving the efficiency and stability of data processing. By optimizing the distribution and scheduling of traffic, congestion problems can be avoided, the delay of small packets can be reduced, and the throughput of the overall system can be improved. In general, this design can significantly improve the processing performance of the RDMA system, especially in high-traffic, high-load network environments, showing better reliability and efficiency.

[0075] In the embodiments of the present application, a load balancing device for the receiving side of an RDMA network is also provided, which is used to implement the above embodiments and preferred implementation modes, and the descriptions that have been made will not be repeated. As used below, the term "module" can implement a combination of software and / or hardware for a predetermined function. Although the devices described in the following embodiments are preferably implemented in software, the implementation of hardware, or a combination of software and hardware, is also possible and conceivable.

[0076] The present application embodiment provides a load balancing device for a receiving side of an RDMA network. Figure 6: is a structural diagram of a load balancing device on the receiving side of an RDMA network provided in an embodiment of the present application. The receiving side of the RDMA network includes a receiving buffer and a receiving side processing engine. The device includes:

[0077] The acquisition module 601 is used to acquire received traffic data from the receiving buffer; the traffic data is composed of messages of multiple different data flows;

[0078] A hash module 602 is used to hash the traffic data to obtain a data linked list corresponding to the messages of different data flows;

[0079] The allocation module 603 is used to classify the data linked list according to the load status of the receiving side processing engine;

[0080] The scheduling module 604 is used to select a virtual function corresponding to the data linked list, perform flow control polling fair scheduling based on the virtual function, and schedule the corresponding target message from the target data linked list;

[0081] The processing module 605 is used to transmit the target message to the target receiving side processing engine based on the load condition of the current receiving side processing engine.

[0082] In an optional implementation, the scheduling module 604 is further configured to lock the target data linked list, and release the lock on the target data linked list after the target receiving side processing engine has processed the target message.

[0083] In an optional implementation, the scheduling module 604 is further used to: when there is traffic congestion in the scheduling function, suspend the corresponding scheduling function from scheduling messages from the data linked list.

[0084] In an optional implementation, the allocation module 605 is specifically used to: classify the data linked list based on the physical function or the virtual function through a load balancing algorithm, so as to fairly schedule the traffic of the physical function or the virtual function.

[0085] The further functional description of each of the above modules and units is the same as that of the above corresponding embodiments and will not be repeated here.

[0086] The RDMA network receiving side load balancing device in this embodiment is presented in the form of a functional unit, where the unit refers to an ASIC (Application Specific Integrated Circuit) circuit, a processor and memory that executes one or more software or fixed programs, and / or other devices that can provide the above functions.

[0087] The present application also provides a computer device having the above Figure 6The RDMA network receiving side load balancing device is shown.

[0088] See also Figure 7 , Figure 7 is a schematic diagram of the structure of a computer device provided by an optional embodiment of the present application, such as Figure 7 As shown, the computer device includes: one or more processors 10, a memory 20, and interfaces for connecting various components, including high-speed interfaces and low-speed interfaces. Various components are connected to each other using different buses for communication, and can be installed on a common mainboard or installed in other ways as needed. The processor can process instructions executed in the computer device, including instructions stored in or on the memory to display graphic information in a graphical user interface on an external input / output device (such as a display device coupled to an interface). In some optional embodiments, if necessary, multiple processors and / or multiple buses can be used together with multiple memories and multiple memories. Similarly, multiple computer devices can be connected, and each device provides some necessary operations (for example, as a server array, a group of blade servers, or a multi-processor system). Figure 7 A processor 10 is taken as an example.

[0089] The processor 10 may be a central processing unit, a network processor or a combination thereof. The processor 10 may further include a hardware chip. The hardware chip may be a dedicated integrated circuit, a programmable logic device or a combination thereof. The programmable logic device may be a complex programmable logic device, a field programmable gate array, a general purpose array logic or any combination thereof.

[0090] The memory 20 stores instructions executable by at least one processor 10, so that the at least one processor 10 executes the method shown in the above embodiment.

[0091] The memory 20 may include a program storage area and a data storage area, wherein the program storage area may store an operating system, an application required for at least one function; the data storage area may store data created according to the use of the computer device, etc. In addition, the memory 20 may include a high-speed random access memory, and may also include a non-transient memory, such as at least one disk storage device, a flash memory device, or other non-transient solid-state storage device. In some optional embodiments, the memory 20 may optionally include a memory remotely arranged relative to the processor 10, and these remote memories may be connected to the computer device via a network. Examples of the above-mentioned network include, but are not limited to, the Internet, an intranet, a local area network, a mobile communication network, and combinations thereof.

[0092] The memory 20 may include a volatile memory, such as a random access memory; the memory may also include a non-volatile memory, such as a flash memory, a hard disk or a solid state drive; the memory 20 may also include a combination of the above types of memory.

[0093] The computer device also includes an input device 30 and an output device 40. The processor 10, the memory 20, the input device 30 and the output device 40 may be connected via a bus or other means. Figure 7 The example of connecting through bus is taken in the following.

[0094] The embodiment of the present application also provides a computer-readable storage medium. The above method according to the embodiment of the present application can be implemented in hardware, firmware, or implemented as a computer code that can be recorded in a storage medium, or is implemented as a computer code that is originally stored in a remote storage medium or a non-temporary machine-readable storage medium and will be stored in a local storage medium through a network download, so that the method described herein can be stored in such software processing on a storage medium using a general-purpose computer, a dedicated processor, or programmable or dedicated hardware. Among them, the storage medium can be a magnetic disk, an optical disk, a read-only storage memory, a random access memory, a flash memory, a hard disk or a solid-state hard disk, etc.; further, the storage medium can also include a combination of the above types of memories. It can be understood that a computer, a processor, a microprocessor controller, or programmable hardware includes a storage component that can store or receive software or computer code. When the software or computer code is accessed and executed by a computer, a processor, or hardware, the method shown in the above embodiment is implemented.

[0095] Part of the present application may be applied as a computer program product, such as a computer program instruction, which, when executed by a computer, can call or provide the method and / or technical solution according to the present application through the operation of the computer. Those skilled in the art should understand that the existence of computer program instructions in computer-readable media includes but is not limited to source files, executable files, installation package files, etc., and accordingly, the way in which computer program instructions are executed by a computer includes but is not limited to: the computer directly executes the instruction, or the computer compiles the instruction and then executes the corresponding compiled program, or the computer reads and executes the instruction, or the computer reads and installs the instruction and then executes the corresponding installed program. Here, the computer-readable medium can be any available computer-readable storage medium or communication medium accessible to the computer.

[0096] Although the embodiments of the present application are described in conjunction with the accompanying drawings, those skilled in the art may make various modifications and variations without departing from the spirit and scope of the present application, and such modifications and variations are all within the scope defined by the appended claims.

Claims

1. A load balancing method for a receiving side of an RDMA network, characterized in that: The RDMA network receiving side includes a receiving buffer and a receiving side processing engine, and the method includes: Obtaining received traffic data from a receiving buffer; the traffic data is composed of messages of multiple different data streams; Hashing the traffic data to obtain data linked lists corresponding to messages of different data flows; Classifying the data linked list according to the load status of the receiving-side processing engine; Select a virtual function corresponding to the data linked list, perform flow control polling fair scheduling based on the virtual function, and schedule the corresponding target message from the target data linked list; Based on the load condition of the current receiving-side processing engine, the target message is transmitted to the target receiving-side processing engine.

2. The method according to claim 1, characterized in that After the step of transmitting the target message to the target receiving side processing engine, the method further includes: The target data linked list is locked, and the target data linked list is unlocked after the target receiving side processing engine has processed the target message.

3. The method according to claim 2, characterized in that The classifying the data linked list according to the load state of the receiving side processing engine includes: The data linked list is classified based on the physical function or the virtual function through a load balancing algorithm, so that the traffic of the physical function or the virtual function is fairly scheduled.

4. The method according to claim 3, characterized in that The performing flow control polling fair scheduling based on the virtual function, and scheduling the corresponding target message from the target data linked list, includes: When there is traffic congestion in the scheduling function, the corresponding scheduling function is suspended to schedule messages from the data linked list.

5. A load balancing device for a receiving side of an RDMA network, characterized in that: The RDMA network receiving side includes a receiving buffer and a receiving side processing engine, and the device includes: An acquisition module, used for acquiring received flow data from a receiving buffer; the flow data is composed of messages of multiple different data streams; A hash module, used to hash the traffic data to obtain a data linked list corresponding to the messages of different data flows; A distribution module, used for classifying the data linked list according to the load status of the receiving side processing engine; A scheduling module, used for selecting a virtual function corresponding to the data linked list, performing flow control polling fair scheduling based on the virtual function, and scheduling a corresponding target message from the target data linked list; The processing module is used to transmit the target message to the target receiving side processing engine based on the load condition of the current receiving side processing engine.

6. The device according to claim 5, characterized in that The device also includes: The locking module is used to lock the target data linked list and release the target data linked list after the target receiving side processing engine has processed the target message.

7. The device according to claim 6, characterized in that The scheduling module is also used for: When there is traffic congestion in the scheduling function, the corresponding scheduling function is suspended to schedule messages from the data linked list.

8. A computer device, characterized in that: include: A memory and a processor, wherein the memory and the processor are communicatively connected to each other, the memory stores computer instructions, and the processor executes the RDMA network receiving side load balancing method according to any one of claims 1 to 4 by executing the computer instructions.

9. A computer-readable storage medium, characterized in that: The computer-readable storage medium stores computer instructions, and the computer instructions are used to enable a computer to execute the RDMA network receiving side load balancing method according to any one of claims 1 to 4.

10. A computer program product, characterized in that The method comprises computer instructions, wherein the computer instructions are used to enable a computer to execute the RDMA network receiving side load balancing method according to any one of claims 1 to 4.

Citation Information

Patent Citations

  • Method, devices and system for load balancing of service chain

    CN103929492A

  • Load balancing method based on polling mechanism

    CN109286686A

  • Multi-RDMA network card virtualization method and equipment for realizing load balancing

    CN113535370A

  • Cloud network element fusion method and system

    CN117857432A

  • Processing unit selection mechanism

    US12175285B1